41

我正在制作一个新的 WPF 应用程序,我需要能够最小化该应用程序,并在时钟旁边(或该一般区域)的系统托盘中拥有漂亮而舒适的位置。

这必须在 Windows XP、Vista 和 7 上工作。我不必支持旧版本的 Windows。

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

4

3 回答 3

77

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);
    }
}
于 2012-04-19T14:47:59.783 回答
18

我在 WPF 中使用这个免费的通知图标实现取得了成功。

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

设置非常简单,并且提供了源代码。它不依赖于 Windows 窗体,因此它是“纯”WPF 并且非常可定制。

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

于 2012-04-19T14:46:57.093 回答
0

notifyIcon从工具箱添加到您的应用程序。
选择您的主要form>>转到Properties>>选择Events图标>>在FromClosing event类型MainForm_FormClosing>>按Enter。

在此处输入图像描述

在打开的.cs文件中输入以下事件操作:

private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
     this.Hide();
     notifyIcon.Visible = true;
     ShowInTaskbar = false;
     e.Cancel = true;
}

现在,当您单击 X 按钮时,您的主 FORM 窗口将最小化到系统托盘。下一步是让 FORM 恢复正常状态。
转到Properties您的notifyIcon>> 查找DoubleClick event>> 类型NotifyIcon_DoubleClick并按 Enter 以获取为您创建的事件函数。

在此处输入图像描述

将此代码放入您的活动中:

private void NotifyIcon_DoubleClick(object sender, EventArgs e)
{
    this.Show();
    notifyIcon.Visible = false;
}

现在,如果你想以花哨的风格制作通知图标,你可以添加上下文菜单并将其链接到通知图标,这样你就会得到类似的东西:

在此处输入图像描述

这里是将 contextMenuStrip 链接到 NotifyIcon 的地方:

在此处输入图像描述

祝你好运!

于 2017-01-12T16:27:29.623 回答