0
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”的灰色标题栏和标题栏上方的标题文本。这很奇怪。我将表单设置为“最小化”并设置为不在任务栏中显示,但它仍然存在。我已经在我的表单中注册了热键,所以我可能不会将其设置为“不可见”,否则即使我之后再次重新注册热键,热键也会以某种方式停止工作。除了将其设置为“不可见”或删除其标题栏之外,我还没有找到其他方法来删除这个最小化的表单标题,这是我也不想做的。我需要这个程序中的标题栏、标题栏图标和标题栏控制区,

如何在不将我的表单设置为工具窗口且不将其设置为完全不可见的情况下使任务栏上方的灰色其余表单消失。我的热键必须在它之后仍然有效,并且当我再次将其设置为正常时,表单必须仍然保留其标题栏、图标和控制区域。

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

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

这是不应该存在的 - 如何在不伤害的情况下将其移除: 在此处输入图像描述

4

1 回答 1

0

您所要做的就是打电话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;
}
于 2013-07-17T07:52:09.833 回答