前言
有时候觉得也想给自己做的小软件添加一些小特色,但是总是不知道怎么实现,偶尔看到一些技术类的杂文,但也都是淡淡一描,没有真正的味道,前几天在一本书上看到了一些程序优化的内容,感觉实现类似QQ动态托盘的小技巧挺实用的,总结一下分享给大家。
NotifyIcon
对于经常接触WINDOWS开发的人来说,NotifyIcon并不陌生,因为VS提供了系统托盘图标的显示控件,而这个控件的名字就叫做NotifyIcon。
但是对于从VB6.0刚刚转到.NET开发环境下的小伙伴们来说就得好好学习一下VS带给开发者的全新环境了。在VB6.0中不曾有过的一些控件或者需要借助第三方开发的控件,VS.NET已经将大部分都集成在环境当中了,这无疑对开发是一个莫大的帮助。
好了,废话不多说,我们开始让我们程序显示在托盘中吧!
代码实现
- 程序的界面如下:
需要的控件
窗体、按钮、Timer、NotifyIcon、Label各一个,基本上这些就足够了
如果你想使用右键菜单的话,那么还可以加一个ContextMenuStrip
定义类
说明
我们的大体的思路是这样的,首先,通过让程序运行,然后使托盘显示我们定义的图标
窗体的全局变量如下
'定义两个图标'
private MyIcon1 As Icon
private MyIcon2 As Icon
'定义切换标识'
private MyFlag As Boolean
'定义窗体是否在显示的标识'
private MyWndShow As Boolean
属性设置
- 需要注意的是,对于FORM和NotifyIcon的属性设置都需要在ContextMenuStrip中指向ContextMenuStrip1
方法类
对于窗体主要控件的编写
- 代码如下:
private Sub New()
Mybase.New()
InitializeComponent()
'开始标记'
MyFlag = True
MyWndShow = True
Try
MyIcon1 = New Icon("1.ico") '引号中为图标名称和路径'
MyIcon2 = New Icon("2.ico")
Catch ex As Exception
MessageBox.Show("错误" + ex.Message,"动态系统托盘-错误")
end Try
end sub
Private Sub 动画图标开始ToolStripMenuItem_Click(sender As Object,e As EventArgs) Handles 动画图标开始ToolStripMenuItem.Click
'开始播放动画'
Me.Timer1.Start()
Me.增加ToolStripMenuItem.Enabled = True
End Sub
Private Sub 动画图标结束ToolStripMenuItem_Click(sender As Object,e As EventArgs) Handles 动画图标结束ToolStripMenuItem.Click
'托盘图标停止闪烁'
Me.Timer1.Stop()
End Sub
Private Sub 退出程序ToolStripMenuItem_Click(sender As Object,e As EventArgs) Handles 退出程序ToolStripMenuItem.Click
'退出程序'
End
End Sub
Private Sub 增加ToolStripMenuItem_Click(sender As Object,e As EventArgs) Handles 增加ToolStripMenuItem.Click
'增加闪烁速度'
'这里所有的数值都可以根据自己的需要进行修改'
If Me.Timer1.Interval > 20 Then
Me.Timer1.Interval -= 10
If Me.Timer1.Interval <= 10 Then
Me.Timer1.Interval = 10
Exit Sub
End If
End If
End Sub
Private Sub 减慢ToolStripMenuItem_Click(sender As Object,e As EventArgs) Handles 减慢ToolStripMenuItem.Click
'减慢速度'
Me.Timer1.Interval += 10
End Sub
对于NotifyIcon的编写
代码如下:
'单击鼠标,让主界面隐藏'
Private Sub NotifyIcon1_Click(sender As Object,e As MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
If (My_ShowWnd = True) Then
'隐藏主界面'
Me.Visible = False
My_ShowWnd = False
Else
Me.Visible = True
My_ShowWnd = True
End If
End Sub
'双击显示主界面'
Private Sub NotifyIcon1_DoubleClick(sender As Object,e As EventArgs) Handles NotifyIcon1.DoubleClick
Me.Visible = True
My_ShowWnd = True
End Sub
对于Timer的编写
Private Sub Timer1_Tick(sender As Object,e As EventArgs) Handles Timer1.Tick
If Not (My_Icon1 Is Nothing) And Not (My_Icon2 Is Nothing) Then
If My_Flag = True Then
NotifyIcon1.Icon = My_Icon2
My_Flag = False
Else
NotifyIcon1.Icon = My_Icon1
My_Flag = True
End If
End If
End Sub
总结
好了,到这里我们的系统托盘图标就做好了,运行起来就去试试吧。