Having the application minimize to the system tray when button is clicked?
c#, minimize, system-tray, tooltip
Solution
I assume you mean minimize to the System tray because you have talked about icons and message ballons?
The following code will set up a tray icon:
private void SetUpTrayIcon()
{
notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.BalloonTipText = "Ballon minimize text";
notifyIcon.BalloonTipTitle = "Ballon minimize title";
notifyIcon.Text = "Icon hover text";
notifyIcon.Icon = new System.Drawing.Icon(
System.Reflection.Assembly.GetExecutingAssembly()
.GetManifestResourceStream("MyIcon.ico"));
notifyIcon.Click += new EventHandler(HandlerToMaximiseOnClick);
}
To show the icon in the tray (you may want to do this on the window state change event for example, do something like the following:
if (notifyIcon != null)
{
notifyIcon.Visible = true;
notifyIcon.ShowBalloonTip(2000);
}
To display a ballon on mouse hover you want to use the same code as above possibly in the mousemove for the icon.
Note: ShowBalloonTip is overloaded if you want to change the message at different points. The message the balloon displays will respect newlines eg Environment.NewLine can be added to it.
Problem
How can I have my application minimize itself to the system tray in WindowsXP/Vista? I'm also looking for a way to have a message display itself when the mouse is hovered on the icon. Is it possible to have two lines in the pop up balloon?