Выделите консоль для приложения WinForm

Я использую следующий код для выделения Консоли для приложения WinForm. Консоль обнаруживается успешно, и вывод там. Но когда я закрываю Консоль, мой WinForm applicaion закрывается одновременно. Почему? Я хочу сохранить окно WinForm.

private void btn_to_console_Click(object sender, EventArgs e)
{
    if (NativeMethods.AllocConsole())
    {
        lbl_console_alloc_result.Text = "Console allocation successfully!";
        IntPtr stdHandle = NativeMethods.GetStdHandle(NativeMethods.STD_OUTPUT_HANDLE);
        Console.WriteLine("from WinForm to Console!");
        lbl_console_alloc_result.Text = Console.ReadLine();
    }
    else
        lbl_console_alloc_result.Text = "Console allocation failed!";
}

[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint = "GetStdHandle")]
public static extern System.IntPtr GetStdHandle(Int32 nStdHandle);

/// Return Type: BOOL->int
[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint = "AllocConsole")]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool AllocConsole();

Заранее спасибо...

7
задан smwikipedia 27 February 2010 в 17:06
поделиться

1 ответ

Закрытие окна консоли приведет к выключению любого приложения - будь то консольное приложение, Windows Forms, собственное приложение Windows или приложение WPF. Это «особенность» окон консоли.

Если вам не нужно такое поведение, вам следует просто создать собственное окно для отображения вашего вывода вместо использования окна консоли. В противном случае вам нужно вызвать FreeConsole вместо закрытия окна, чтобы отделить ваше приложение от окна консоли.

7
ответ дан 7 December 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: