什么是菜单
我们去吃饭,服务员会给你一份菜单,你点菜以后,厨师会按照你的选择做出相应的菜品。程序也是一样,简单的程序,也许就一个窗体,几个简单的控件就够用了,但是有的程序功能比较全面比较复杂,如果把这些功能都用按钮或者其他控件来实现的话,非常杂乱,不符合用户使用,菜单的功能就很重要了。
不信你看用按钮来实现程序的各种功能是这种情况:
再看看用菜单的效果:
是不是干净整洁又方便?
如何添加菜单
新建一个工程,添加窗体,在窗体上右键,选择"菜单编辑器"
然后我们看常用选项的功能:
❶ 菜单显示的标题,很好理解,相当于按钮的"Caption"属性。
❷ 菜单的名称,这个和标题不能混淆,要实现菜单的功能,就需要写相应的代码,菜单只有一个单击事件,写在谁的单击事件里?就是这个菜单的名称里。如图,"新建工程"这个菜单的功能要写在XinJian_Click里面。
❸ 这个菜单的index,如果菜单名称重复了,就成了数组,必须有索引,才能区分每一个菜单。如果没有重复,索引可以不填。
❹ 复选,选中这个的时候,该菜单单击一次前面会有"√",再次单击去掉。用法和复选框控件类似。
❺ 上下左右光标,其实最常用的就是左右,它控制菜单的分级,也就是多层菜单,试一试就很容易明白,不过多解释。
❻ 好理解,设置菜单的快捷键,程序运行时,按下设定的快捷键就会执行单击该菜单的代码,相当于你点击了这个菜单。
❼ 如果取消勾选,这个菜单则消失不可见,但不是删除掉,它是存在的。
菜单名称.Visible =True
这样又可见了,很好理解,和控件的Visible属性是类似的。
❽ 常用,需要添加菜单时单击它,就会新增一项菜单。
❾ 当勾选时,该菜单正常,如果取消勾选,这个菜单则变成灰色。在程序运行中也可以用代码来控制例如:
菜单名称.Enabled = False
和控件的Enabled属性是类似的。
菜单中分隔符怎么办
很多程序的菜单有分隔符(如下图)
这是怎么做到的呢?很简单,就是在需要放分隔符的地方加一个菜单,把菜单标题改为"-",加减乘除的减号,程序自动转换成分隔符。
运行程序看下效果:
右键菜单是怎么回事
右键弹出菜单也经常见到,它是怎么实现的呢?很简单,在需要弹出菜单的鼠标MouseDown事件中判断是否右键,如果是则PopupMenu菜单名称即可。比如我想在窗体上弹出,就在Form_MouseDown事件中写入下面的代码:
如果Button的值是2,就代表是鼠标右键,PopupMenu空格菜单名称即可,但是这个菜单不能有索引。也可以让弹出的菜单位置固定一个坐标,例如:
PopupMenu bianji, , 100, 300
这样菜单固定在窗体的(100,300)出弹出,如果省略,则鼠标在哪,就在哪弹出。