我的应用程序用于聊天,我想如果有人需要快速隐藏它,但又不想关闭它,我想出了这个:
private void button6_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
但是,我不想进入任务栏,而是希望它在托盘中显示(无弹出窗口),只显示应用程序图标,当有人点击它时,它需要设置此
this.WindowState = FormWindowState.Normal;
这可能,怎么样?
同样是系统托盘,我指的是右下角的那个,时间旁边
我仍然无法让这个工作,如果我按你们所说的那样,通知栏中没有任何内容(顺便说一句:这是最小化的完整代码)
private void button6_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
private void Form_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.Hide();
}
}
private void notifyIcon_Click(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
为什么这不起作用?
答案 0 :(得分:8)
处理表单的Resize事件。在此处理程序中,您重写 Resize事件的基本功能,使表单最小化 系统托盘而不是任务栏。这可以通过这样做来完成 在表单的Resize事件处理程序中跟随:
MouseDoubleClick
事件。在这里,您使用Show()
方法显示表单。在表单resize事件中,执行检查并隐藏表单
private void Form_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.Hide();
}
}
然后点击任务栏图标时,只需将其恢复。
private void notifyIcon_Click(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
参见:
How do I minimize a WinForms application to the notification area?
minimize app to system tray
答案 1 :(得分:5)
使用以下代码:
if (WindowState == FormWindowState.Minimized)
{
this.Hide();
}
当您最小化表单时,只需隐藏它即可。
您必须在Form_Resize
事件中实现上述代码。
然后在点击任务栏图标时,只需恢复其状态,如下所示:
private void notifyIcon_Click(object sender, EventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
为此,您需要使用notifyIcon_Click
事件。
希望它有所帮助。