我需要一个具有以下行为的Windows窗体应用程序:
Console.WriteLine()
重定向所有文本(因此程序必须将所有输出重定向到parrent控制台)为此目的适合以下代码:
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AttachConsole(int dwProcessId);
[STAThread]
static void Main()
{
AttachConsole(-1);
Console.WriteLine("Test1");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
Console.WriteLine("WinForms exit");
}
但是这里有一个问题:当窗体打开并且用户关闭控制台时,我的程序会自动关闭。我需要在用户关闭控制台后让程序继续运行。我尝试使用SetConsoleCtrlHandler()
并在处理程序调用{{1}}中但是在调用处理程序之后程序关闭了所有内容:
FreeConsole()
如何在用户关闭控制台时阻止关闭Windows窗体应用程序?
答案 0 :(得分:0)
你可以像
一样抓住Window Closing Event private void winMain_Closing(object sender, CancelEventArgs e)
{
e.Cancel = true;
}