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

标签 c# wpf .net-4.0 system-tray minimize

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

这必须在 Windows XP、Vista 和 7 上运行。我不需要支持旧版本的 Windows。

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

最佳答案

Example in MSDN forum

这里有一个简单的例子来展示如何最小化到通知区域。您需要添加对 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);
    }
}

关于c# - 使用 .NET 4 让程序最小化到系统托盘的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10230579/

相关文章:

c# - 如何传递要使用 LINQ 调用的函数委托(delegate)?

c# - 您将如何通过多个键实现快速查找?

c# - 使用DirectShow的过时COMType的编译器错误

c# - Entity Framework 在删除前执行更新,我想停止这个

c# - WPF:如何像在 css 中那样设置类的样式?

c# - 无法从 Derived<Derived 2T> 转换为 BaseT<base 2T>

c# - 如何保持长时间运行的 NHibernate Session 数据一致?

wpf - 验证错误时禁用按钮

c# - 在分页符上将 WPF TableRow 元素保持在一起

c# - 在页面加载数据时使用母版页显示加载消息 asp.net