Winforms 如何让Windows窗体退出到系统托盘?

Winforms 如何让Windows窗体退出到系统托盘?,winforms,Winforms,我的意思是退出到系统托盘,而不是最小化到系统托盘,即当您单击Windows窗体右上角的“红十字”时,它不是关闭应用程序,而是在系统托盘中运行。您可以钩住窗体关闭事件,取消关闭事件并隐藏窗体 示例代码 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; this.Hide(); } 处理For

我的意思是退出到系统托盘,而不是最小化到系统托盘,即当您单击Windows窗体右上角的“红十字”时,它不是关闭应用程序,而是在系统托盘中运行。

您可以钩住窗体关闭事件,取消关闭事件并隐藏窗体

示例代码

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            this.Hide();
        }

处理FormClosing事件,阻止关闭(
e.Cancel=true
),然后像处理表单一样关闭


当然,您必须有一个条件,在该条件下,关闭表单不会使系统托盘最小化。例如,跟踪状态,如果表单已最小化,则允许表单实际关闭。

不可能“退出”到系统托盘,必须运行带有消息队列的进程,以允许图标显示在托盘中并正常工作(例如,当您将鼠标悬停在托盘上时,图标不会消失)


adobe和其他公司处理这一问题的方法是,使用一个单独的应用程序,它只显示系统托盘图标,当您单击它时,应用程序没有运行,它会启动它,如果应用程序已经运行,它会将它带到前台。

我看到您询问了两种方法,一种是您说希望它退出,因为该过程不再运行。另一个,您希望它在系统托盘中运行。取决于你真正想要的(你不能两者都有),我的答案或是阿杰·维兹/戴夫的答案可能是正确的