日期:2012-10-28  浏览次数:20501 次

走近VB.Net(六) 菜单与托盘图标

在VB.Net中菜单使用控件而不是菜单编辑器,主菜单使用MainMenu控件,弹出菜单使用ContextMenu,这里说一说弹出菜单,至于主菜单用法也没有什么大的区别,在VB6中只要使用菜单就一定会出现那个看得让人有点厌烦的标题栏,可是又没有什么好的办法,只好增加一个隐藏的窗体放置菜单,这就增加了不必要的内存开销,而现在的菜单控件不再有这些问题,可以设置没有标题栏却仍然使用菜单,更加灵活,更加易于使用,当然功能也更强大。托盘图标也使用控件,真的非常容易使用。

新建一个工程,如下添加(象在VB6中一样,点选控件然后在窗体上拖动一下)contextmenu1,trayicon1,(这些运行时不可见的控件都出现在窗体下面的区域),



首先编辑菜单,白色的请单击一下就变成蓝色选中状态,当菜单条呈蓝色选中状态时请输入菜单的标题,这个比VB6容易得多,我不知道是谁说VB.Net很麻烦,更不知道谁发明如此伟大的理论,一定要学java,然后才能学VB.Net。原文的作者只是说在VB.Net还没有发行(这是很久以前的事了)的时候可以学一些java以熟悉一下面向对象的方法。学什么本是各人自己的事情,不过说话总要有一些根椐,我想把王国荣的《VB7 的对象导向功能》开篇一段话放在下面:

“记得有首歌,描写女方婉拒男方的追求而唱出「他比你先来」,但是在计算机的世界里只问谁是我最需要的,先来后到的次序并不是主要的考量。谈到对象导向程序语言的诞生,C++ 及Java的诞生比第一名的SmallTalk晚了很久,但使用人口却远远超过SmallTalk,VB更别说了,只能用「大迟到者」来形容,但迟到总比没到好。为什么VB迟到那么久,原因笔者不详(问微软吧),但今天他也跟其它参与对象导向宴会的程序语言一样盛装而到,要不要与他跳支舞呢?且让我们先来检视一番。”

原文作者认为在VB6中其实已实现80%的面向对象,只是有些人一定要说只有1%的(否则如何才能显出那个的优越呢?)。现在用VB的人少了,大部分是由于有些顽固的观念在作怪,有些人认为有了C#,还要C++做什么?更有人说有了C#,还要VB.Net做什么,我的辩论水平不是很好,我也没有这方面的知识,不过如果你相信王国荣的这段话,相信微软的开发组不是吃“”的,那你就学吧,学习比之成就感也有不逊的乐趣。(并不是所有的人都是为了容易才学VB的,也许想把更多的精力放到需要的地方或者是上帝的安排,VB.Net正是适用这样的人),总之你喜欢用什么就用什么,如果喜欢用VB6的话也没有什么不对,现在不是还有好多人在用VB5么?(winXP都出来了,win95也没有过时,winME想把DOS砍掉,DOS还活得很好,不过我是XXYJ的。如果VB8.0出来,我自然是8.0不回头了)

菜单项加上“退出程序”,“隐藏托盘图标”等等。单击trayicon1的控件,在属性栏编辑属性,visible属性为false,单击contextmenu右侧的向下按键,在下拉列表选择你想要使用弹出菜单,这里只有一个弹出菜单contextmenu1供选择,在icon属性栏的对话框中选出择一个icon图标,最好拷贝到当前目录再在属性栏输入,单击contextmenu,icon前的“+”号,有更多的选项可供选择。

添加一个button1,设置text属性为“显示托盘图标”,写代码如下:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

trayicon1.Visible = True
End Sub


单击contextmenu1控件,在出现在窗体上的菜单上选出择“退出程序”,双击(如果代码编辑不出现,请重新双击),写代码如下:
Protected Sub MenuItem5_Click(ByVal sender As Object, ByVal e As System.EventArgs)

End

End Sub



单击“隐藏托盘图标”,写代码如下:
Protected Sub MenuItem6_Click(ByVal sender As Object, ByVal e As System.EventArgs)

trayicon1.Visible = False

End Sub



运行程序,单击按键“显示托盘图标”,显示托盘图标,右键单击托盘图标选出菜单“隐藏托盘图标”单击,隐藏托盘图标.。当然你需要根据你的需要扩充更强大的功能,让你的程序多姿多彩。