我正在制作一个新的 WPF 应用程序,我需要能够最小化该应用程序,并在时钟旁边(或该一般区域)的系统托盘中拥有漂亮而舒适的位置。
这必须在 Windows XP、Vista 和 7 上工作。我不必支持旧版本的 Windows。
如果我使用 .NET 4,实现这一目标的最简单方法是什么?
我正在制作一个新的 WPF 应用程序,我需要能够最小化该应用程序,并在时钟旁边(或该一般区域)的系统托盘中拥有漂亮而舒适的位置。
这必须在 Windows XP、Vista 和 7 上工作。我不必支持旧版本的 Windows。
如果我使用 .NET 4,实现这一目标的最简单方法是什么?
这是一个快速示例,展示如何最小化通知区域。您需要添加对System.Window.Forms
和System.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);
}
}
我在 WPF 中使用这个免费的通知图标实现取得了成功。
http://www.hardcodet.net/projects/wpf-notifyicon
设置非常简单,并且提供了源代码。它不依赖于 Windows 窗体,因此它是“纯”WPF 并且非常可定制。
您可以在CodeProject上找到有关如何使用它的教程。
这是Nuget 包
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 的地方:
祝你好运!