If you want your VB.Net application to minimize to the system tray instead of closing, then this sample project will help you. First create a windows forms application, Then add the following declarations to your forms code.
Private TrayIcon As NotifyIcon Private TrayMenu As ContextMenuStrip Private AppClose As Boolean 'Boolean FLAG which identifies 'that you want to exit the application
The TrayIcon will hold all the information of the type of icon that you want to appear on the system tray. This includes the icon that would appear on the system tray, the text that will display when you hover on the tray icon, as well as the context menu for the tray icon.
Now Add the following code on your Forms Load Event, This will populate the contextmenu with items and add the corresponding click event handler.
Dim mnuShowForm, mnuExit As ToolStripMenuItem Dim mnuSep As New ToolStripSeparator TrayMenu = New ContextMenuStrip mnuShowForm = New ToolStripMenuItem("Open Form") AddHandler mnuShowForm.Click, AddressOf MenuItemClick mnuExit = New ToolStripMenuItem("Exit Program") AddHandler mnuExit.Click, AddressOf MenuItemClick TrayMenu.Items.AddRange(New ToolStripItem() {mnuShowForm, mnuSep, mnuExit})
After that, create the procedure below
Private Sub MenuItemClick(ByVal sender As Object, ByVal e As System.EventArgs) Select Case CType(sender, ToolStripMenuItem).Text Case "Open Form" TrayIcon.Visible = False Me.Show() Case "Exit Program" If Not IsNothing(TrayIcon) Then ShowTrayIcon(False) TrayIcon = Nothing AppClose = True 'tell the program to exit 'this prevents the form 'from hiding itself 'instead of closing End If Application.Exit() End Select End Sub
The above code will handle the events fired when you click on the contextmenu items of of your TrayIcon.
Now add the following code which handles the creation of the NotifyIcon Object as well as showing and hiding of the tray icon itself.
Private Sub ShowTrayIcon(Optional ByVal blnShow As Boolean = True) If TrayIcon Is Nothing Then TrayIcon = New NotifyIcon TrayIcon.Icon = Me.Icon TrayIcon.ContextMenuStrip = TrayMenu TrayIcon.Text = Me.Text End If If blnShow Then TrayIcon.Visible = True Else TrayIcon.Visible = False End If End Sub
Finally, add the following code on your forms FormClosing event. This will trigger the showing of the tray icon and hiding the form from view.
Note: setting E.Cancel = True instructs the system that we want to cancel the closing of the form.
Attached is the completed sample project. Feel Free to send me any questions that you may have...
Download Code
0 comments:
Post a Comment