Introduction
I usually like to implement the minimizing to the system tray feature in my applications... In addition, I also like to add a context menu to the icon which allows the user to restore the app from the tray or exit. After adding the same several lines of code to each application, I realized that it would be beneficial to streamline the process.
The Class
This class allows you to add this functionality in one line of code. The constructor takes the main form (Me
) of your application, the text to add to the icon [optional], and the icon you want to display in the tray [optional - defaults to application icon].
Example:
Dim minToTray As New ClsMinToTray(Me, "MyApp is running...", myIcon)
Options: You can also choose the window state on restore and add to the context menu (the default tray icon menu has two items - Restore and Close).
Example (choose window state):
minToTray.restoreWindowState = FormWindowState.Maximized
Example (add to default context menu):
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
minToTray.trayMenu.MenuItems.Add("New Menu Item", _
AddressOf NewMenuItem_click)
End Sub
Public Sub NewMenuItem_click(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Notes
This class seems to work well for me. I have used it in both VS2003 and VS2005b applications. The only issue I have ran into is in VS2005b. The ShowInTaskbar
property of the main form (on multi-container) application seems to cause some anchoring problems (forms layout is affected on restore). I'm assuming this is a VS2005b bug...or maybe I'm missing something.