【VB.NET】实现动态托盘图标

前言

有时候觉得也想给自己做的小软件添加一些小特色,但是总是不知道怎么实现,偶尔看到一些技术类的杂文,但也都是淡淡一描,没有真正的味道,前几天在一本书上看到了一些程序优化的内容,感觉实现类似QQ动态托盘的小技巧挺实用的,总结一下分享给大家。

NotifyIcon

  • 对于经常接触WINDOWS开发的人来说,NotifyIcon并不陌生,因为VS提供了系统托盘图标的显示控件,而这个控件的名字就叫做NotifyIcon

  • 但是对于从VB6.0刚刚转到.NET开发环境下的小伙伴们来说就得好好学习一下VS带给开发者的全新环境了。在VB6.0中不曾有过的一些控件或者需要借助第三方开发的控件,VS.NET已经将大部分都集成在环境当中了,这无疑对开发是一个莫大的帮助。

好了,废话不多说,我们开始让我们程序显示在托盘中吧!

代码实现

  • 程序的界面如下:
    这里写图片描述

需要的控件

  • 窗体、按钮、Timer、NotifyIcon、Label各一个,基本上这些就足够了

  • 如果你想使用右键菜单的话,那么还可以加一个ContextMenuStrip

定义类

说明

  • 我们的大体的思路是这样的,首先,通过让程序运行,然后使托盘显示我们定义的图标

  • 其次,通过右键菜单来让托盘图标闪烁,并且实现类似QQ小企鹅似的动态效果

  • 同时,通过右键菜单调节托盘图标闪烁的快慢以及是否退出程序

窗体的全局变量如下

    '定义两个图标'
    private MyIcon1 As Icon
    private MyIcon2 As Icon
    '定义切换标识'
    private MyFlag As Boolean
    '定义窗体是否在显示的标识'
    private MyWndShow As Boolean

属性设置

  • 需要注意的是,对于FORM和NotifyIcon的属性设置都需要在ContextMenuStrip中指向ContextMenuStrip1

方法类

  • 在窗体运行时导入两个图标文件(需要将下载好的图标文件放入该项目文件夹的BIN\DEBUG目录下,或者自行设定路径)并且用布尔值标记两个图标和窗体。

对于窗体主要控件的编写

  • 代码如下:
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

总结

好了,到这里我们的系统托盘图标就做好了,运行起来就去试试吧。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值