在开发应用程序时,我们常常需要使用到弹出式菜单。有时候,我们需要用户在单击某个控件时,实现这一功能。
.NET为我们提供了这样一个控件ContextMenuStrip,它可以和其他控件进行绑定,当用户单击该绑定控件时,就弹出对应的菜单。
但是这样做有一个问题,ContextMenuStrip的触发条件是与其绑定的控件被右键单击时。
如果一个应用程序所有的界面操作都是通过左键单击或双击完成的,突然某个控件需要用户改用右键单击。这种情况难免让人有些不爽。
因此有没有一种方法能通过左键单击来触发弹出式菜单呢?答案当然是肯定的。下面我们来说说这个方法:
- 首先还是和往常一样,创建一个ContextMenuStrip,取好名字,设置好相关的属性。这里我们将控件命名为ctxMenu
- 接下来创建一个用于触发该菜单的控件,可以是任何的控件,这里我们使用一个Button控件命名为btnMenu
- 然后就是代码部分了,很简单的一句代码:
private void btnMenu_Click(object sender, EventArgs e)
{
// 参数一为被绑定的控件
// 参数二为弹出式菜单的显示位置(0,0与被绑定控件的原点重合)
ctxMenu.Show(btnMenu, new Point(0, btnMenu.Height + 5));
}
备注: 当然这个代码还不是十分的完美,因为现在不论是单击左键还是右键都会显示菜单,大家可以把代码写到控件的鼠标事件中,并对左右键单击作出判断来解决这个问题。