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.
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].
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", _
Public Sub NewMenuItem_click(ByVal sender As Object, ByVal e As EventArgs)
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.