(WPF C#)我想最小化应用程序到系统托盘,但在任务栏中没有图标:
所以我设置:
this.ShowInTaskbar = false;
然后不良图标消失了,但桌面上出现了新栏!
请问有人在最小化后如何解决这个问题?
这是我代码的重要部分:
private void stateChangedEvent(object sender, EventArgs e)
{
if (WindowState.Minimized == WindowState)
{
this.ShowInTaskbar = false;
var iconHandle = Properties.Resources.iconPaw.GetHicon();
notifyIcon.Icon = System.Drawing.Icon.FromHandle(iconHandle);
notifyIcon.Click += new EventHandler(this.WindowsStateToNormal);
notifyIcon.Visible = true;
notifyIcon.BalloonTipText = "Radek app";
notifyIcon.BalloonTipTitle = "Welcome Message";
notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info;
notifyIcon.ShowBalloonTip(3000);
}
}
private void WindowsStateToNormal(object Sender, EventArgs e)
{
this.WindowState = WindowState.Normal;
notifyIcon.Visible = false;
}
3 回答
试着打电话
this.Hide()
当窗体最小化时,最好在
Form.Resize
事件处理程序中:在某些时候你必须打电话
this.Show()
例如,在
NotifyIcon
的DoubleClick
处理程序中 .最小化到托盘是一个黑客 . 要完成它,您需要:
捕获最小化事件并取消它以防止实际最小化
使用
this.Hide()
隐藏应用程序窗口在任务栏图标上侦听单击事件,并在单击时取消隐藏应用程序窗口
您的主窗口及其通知图标在激活方面没有关系 .
您通常不希望正在运行的应用程序消失,也无法再次激活它 . 因此,Windows为应用程序的用户提供了通过单击其任务栏图标(您要隐藏它)或单击其边框(您也不想显示)来重新激活窗口的选项 .
为了避免这种情况,只需在主窗口最小化时隐藏它,并在(双击)通知图标时取消隐藏它 .
在minimize app to system tray,How do I minimize a WinForms application to the notification area?,Minimize to tray,Minimizing a system windows form in tray in C# without seeing it hanging where taskbar等中使用更少的单词和更多代码解释了这一点 .