Search code examples
c#tooltipsystem-trayminimize

Having the application minimize to the system tray when button is clicked?


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?


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.