Logan
Logan

Reputation: 425

C# trayicon using wpf

I'm very new to programming C#, though I've scripted C# in unity3D for a few years. I'm currently trying to make a WPF tray icon, all the sources I've found on the net tell me to use

System.Windows.Forms

However .Forms is not available in System.Windows for me, and I have no idea why not. Can anyone help me with this?

Upvotes: 13

Views: 18997

Answers (2)

Erre Efe
Erre Efe

Reputation: 15577

You need to add references to the System.Window.Forms and System.Drawing assemblies and then you use it like this. Suppose you try to minimize the Window to tray icon and show it again when user click that icon:

public partial class Window : System.Windows.Window
{

    public Window()
    {
        InitializeComponent();

        System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon();
        ni.Icon = new System.Drawing.Icon("Main.ico");
        ni.Visible = true;
        ni.DoubleClick += 
            delegate(object sender, EventArgs args)
            {
                this.Show();
                this.WindowState = WindowState.Normal;
            };
    }

    protected override void OnStateChanged(EventArgs e)
    {
        if (WindowState == WindowState.Minimized)
            this.Hide();

        base.OnStateChanged(e);
    }
}

Upvotes: 36

Chris Dunaway
Chris Dunaway

Reputation: 11216

You need to add a reference to the System.Windows.Forms.dll and then use the NotifyIcon class.

http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx

Upvotes: 3

Related Questions