C# 最小化windows窗体到系统托盘
下面是我的失败代码:C# 最小化windows窗体到系统托盘,c#,.net,winforms,C#,.net,Winforms,下面是我的失败代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
Hide();
}
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
Show();
WindowState = FormWindowState.Normal;
}
}
当我单击“最小化”时,它仍然显示在我的任务栏上。你们知道怎么回事吗?使用属性从任务栏中删除表单:
private void MainForm_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
ShowInTaskbar = false;
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ShowInTaskbar = true;
WindowState = FormWindowState.Normal;
}
感谢:
注意,我更改了调用base.WndProc和处理消息的顺序。否则,第一次单击时将取消最小化。我已经发现了问题所在。我的Form1.Designer.cs文件中缺少事件处理程序声明。 我已经在Form1下添加了以下内容,它可以正常工作:
this.Resize += new System.EventHandler(this.Form1_Resize);
请试一试
this.ShowInTaskbar=false
在show()中
this.ShowInTaskbar=true 我已经编辑了你的标题。请参阅“”,其中的共识是“不,他们不应该”。避免编写使类侦听其自身事件的代码。事件用于告诉其他类中的其他代码表单发生了什么。相反,您永远不会忘记以这种方式订阅事件。这肯定是你忘了做的。我正在Windows 7中使用Microsoft Visual Studio 2008。这和我的问题有什么关系吗?我曾试图在MainForm_Resize中设置一个断点,但没有停止。似乎它没有进入MainForm_Resize事件。@Coolguy在最小化表单或恢复其状态时,不需要手动
隐藏或显示表单。已在Windows 7的.NET 4.5上验证
this.Resize += new System.EventHandler(this.Form1_Resize);