gpt4 book ai didi

C# 以优雅的方式关闭最小化到托盘的进程?

转载 作者:太空狗 更新时间:2023-10-29 21:59:06 25 4
gpt4 key购买 nike

我有一个可以使用表单显示窗口的应用程序。该表单仅在应用程序使用 -debug 标志运行时显示,否则仅显示在托盘中。

var form = new Form();
if(DebugMode)
form.Show();

应用程序在 Debug模式下运行时会监听 CloseMainWindow(),如表单所示。我怎样才能让应用程序也听 CloseMainWindow() 而不显示它?如果不处于 Debug模式,我不希望用户能够与表单交互。

我尝试了几种方法,比如显示窗口但将大小设置为 0。这显示了一个小窗体,即未隐藏。

if (!DebugMode)
{
form.Show();
form.Size = new Size(0, 0);
}

同样显示它,然后隐藏它不起作用:

if (!DebugMode)
{
form.Show();
form.Hide();
}

显示它,但开始最小化并且不显示在任务栏中也不起作用:

if (!DebugMode)
{
form.Show();
form.WindowState = FormWindowState.Minimized;
form.ShowInTaskbar = false;
}

我是否遗漏了一些非常明显的东西,或者是否无法以优雅的方式关闭最小化到托盘的进程?

最佳答案

如果我没有正确理解这个问题,你想要在不处于 Debug模式时完全隐藏表单(即除了在任务管理器中之外的任何地方都看不到窗口)并且当有人通过任务管理器终止进程时,你想要执行一些代码进行清理或只是收到通知。

根据这个假设我的解决方案,下面的代码应该可以工作

 public static bool DebugMode = false;

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

var form = new Form1();
form.Load += (s, e) =>
{
if (!DebugMode)
{
form.Opacity = 0;
form.ShowInTaskbar = false;
}
};

form.FormClosing += (s, e) =>
{
// Breakpoint hits
};

Application.Run(form);
}

关于C# 以优雅的方式关闭最小化到托盘的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com