繁体   English   中英

最小化C#托盘中的系统窗口表单,而不会看到它挂在任务栏上

[英]Minimizing a system windows form in tray in C# without seeing it hanging where taskbar

this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;
//this.visible = false (Hotkeys stop working forever but the grey rest of the form would disappear from above taskbar)
ReRegisterHotkeys();

我使用上面的代码通过托盘图标将应用程序最小化。 现在,最小化的表单其余部分仍悬停在开始按钮所在的任务栏上方的左上角。 仅可见带有灰色小标题栏的表格,该标题栏带有小“ x”将其关闭,并且其标题文本位于标题栏上方。 这很奇怪。 我将表单设置为“ imimimized”,并设置为不显示在任务栏中,但仍然可以。 我已经在表单中注册了热键,因此我可能不会将其设置为“不可见”,否则即使以后再次重新注册热键,热键也会以某种方式停止工作。 除了将其设置为“不可见”或将其标题栏设置为我也不想执行的操作之外,我没有其他方法可以删除此最小化的窗体标题。 我在此程序中需要标题栏,标题栏图标和标题栏控制区域,该表单不应成为工具窗口或无边框。

如何使任务栏上方的表单的灰色其余部分消失,而无需将表单设置为工具窗口,也没有将其设置为完全不可见。 当我再次将其重新设置为正常状态时,我的热键仍必须能够正常工作,并且表单仍必须保持其标题栏,图标和控制区域。

我从这个示例中获取了我的热键代码。 唯一的区别是,我打包了将热键注册到名为“ ReRegisterHotkeys()”的子函数中的过程。

重要提示:最小化表单时标题栏显示的问题与已注册的热键无关。 这是常见的“ C#问题”。 如果我有一个窗体并将其最小化,并将其设置为在任务栏中不可见,则仍在任务栏中显示标题栏,并带有“ x”。 我想删除而不使窗体不可见或不删除窗口样式。 由于热键消失了,因此“ this.show”或“ this.hide”的行为与“ this.visible = true / false”相同。 我创建了默认显示的表单,并且不想将其隐藏。

这是不应该存在的-如何在不造成伤害的情况下将其删除: 在此处输入图片说明

您要做的就是在要隐藏和显示表单时调用Hide()Show() 注意: Hide()也将从任务栏隐藏。

private void Form1_Resize(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
        Hide();
}

您可以隐藏并显示与表单相对的NotifyIcon以便在显示表单时没有图标。

显然,您需要一个NotifyIcon才能在系统任务栏中显示您的应用程序。

最后,您的代码将如下所示:

private void Form1_Resize(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
    {
        Hide();
        notifyIcon1.Visible = true;
    }
}

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    Show();
    notifyIcon1.Visible = false;
    WindowState = FormWindowState.Normal;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM