Minimizing to System Tray with .NET/C#
A basic example (standard VB2010
using
directives).
TIP: System.Windows.Forms.MenuItem can have submenus by overloading.C# Code (notifyIcon1 is already added from Toolbox):
public partial class MainForm : Form
{
private MenuItem[] IcoMenuItems;
private ContextMenu IcoContextMenu;
public MainForm()
{
InitializeComponent();
CreateTasktrayIcon();
}
private void CreateTasktrayIcon()
{
IcoContextMenu = new ContextMenu();
IcoMenuItems = new MenuItem[1];
// Initialize the menu item(s).
IcoMenuItems[0] = new MenuItem();
IcoMenuItems[0].Index = 0;
IcoMenuItems[0].Text = "Exit";
IcoMenuItems[0].Click += new EventHandler(IcoMenuItem_ExitClick);
// Add menu items to a context menu.
IcoContextMenu.MenuItems.AddRange(IcoMenuItems);
// Add the menu item(s) to the NotifyIcon object.
notifyIcon1.ContextMenu = IcoContextMenu;
// Add a double-click handler to maximize program.
notifyIcon1.DoubleClick += new EventHandler(IcoMenuItem_DoubleClick);
// Hide by default.
notifyIcon1.Visible = false;
}
private void IcoMenuItem_ExitClick(object Sender, EventArgs e)
{
// Close MainForm, which closes the application.
this.Close();
}
private void IcoMenuItem_DoubleClick(object Sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized) {
this.Show();
this.WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false;
}
}
private void MainForm_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized) {
this.Hide();
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(500);
}
}
}