使用.NET 4将程序最小化到系统托盘的最简单方法

Onl*_*ere 33 c# wpf system-tray .net-4.0 minimize

我正在制作一个新的WPF应用程序,我需要能够最小化应用程序,并且在系统托盘中,在时钟旁边(或在那个一般区域)中保持良好和舒适.

这必须适用于Windows XP,Vista和7.我不必支持旧版本的Windows.

如果我使用.NET 4,最简单的方法是什么?

LaG*_*ere 67

MSDN论坛中的示例

这是一个快速示例,说明如何最小化通知区域.您需要添加对System.Window.FormsSystem.Drawing程序集的引用.

public partial class Window1 : System.Windows.Window
{

    public Window1()
    {
        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 == System.Windows.WindowState.Minimized)
            this.Hide();

        base.OnStateChanged(e);
    }
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*ide 16

我在WPF中使用这个免费的notify-icon实现已经成功.

http://www.hardcodet.net/projects/wpf-notifyicon

设置非常简单,并提供源代码.它不依赖于Windows Forms,因此它是'纯'WPF并且可以自定义.

您可以在CodeProject上找到有关如何使用它的教程.
这是Nuget套餐