Allouer une console pour une application WinForm

J’utilise le code suivant pour allouer une console à une application WinForm. La fenêtre de la console s’affiche avec succès et le résultat est là. Mais lorsque je ferme la fenêtre de la console, mon application WinForm est fermée en même temps. Pourquoi? Je veux garder la fenêtre 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.DllImportAtsortingbute("kernel32.dll", EntryPoint = "GetStdHandle")] public static extern System.IntPtr GetStdHandle(Int32 nStdHandle); /// Return Type: BOOL->int [System.Runtime.InteropServices.DllImportAtsortingbute("kernel32.dll", EntryPoint = "AllocConsole")] [return: System.Runtime.InteropServices.MarshalAsAtsortingbute(System.Runtime.InteropServices.UnmanagedType.Bool)] public static extern bool AllocConsole(); 

Merci d’avance…

La fermeture d’une fenêtre de console ferme toute application, qu’il s’agisse d’une application console, de Windows Forms, d’une application Windows native ou d’une application WPF. C’est une “fonctionnalité” des fenêtres de la console.

Si vous ne voulez pas ce comportement, vous devriez plutôt créer une fenêtre personnalisée pour afficher votre sortie au lieu d’utiliser une fenêtre de console. Sinon, vous devez appeler FreeConsole au lieu de fermer la fenêtre pour détacher votre application de la fenêtre de la console.