Output To Console In Windows Forms Application
This post shows you how to output data to a Console in a Windows Forms Application. I use this technique religiously when developing Windows Forms applications. Debugging is much simpler when you can see information on what your application is doing in a Console. Of course the onus is on you as developer to output data which will help you.
In this post I will use a simple Windows Forms application which adds two numbers.

By default a Windows Forms application does not output to a Console even if you write a Console.Write() or Console.WriteLine(). This shortcoming can be addressed by using Win32 API. In your Windows Forms application you can declare a class which provides a wrapper around Win32 functions.
public class Win32 { /// <summary> /// Allocates a new console for current process. /// </summary> [DllImport("kernel32.dll")] public static extern Boolean AllocConsole(); /// <summary> /// Frees the console. /// </summary> [DllImport("kernel32.dll")] public static extern Boolean FreeConsole(); }
A Console must be started to accept input and display our messages. This can be done by calling Win32.AllocConsole() function. For my example I will start the console in my form’s constructor.
public Form1() { InitializeComponent(); Win32.AllocConsole(); }
Now when I write to Console, I will see data appear in the console window which was started in my constructor.
private void Add(int num1, int num2) { int result = num1 + num2; Console.WriteLine( string.Format("{0} + {1} = {2}", num1, num2, result)); }

As a good practice you should also close the console window by calling Win32.FreeConsole() method before your application exits.
13 Responses to Output To Console In Windows Forms Application
Leave a Reply Cancel reply
Top Posts
- LINQ To SQL Tutorial
- LINQ To SQL Join On Multiple Conditions
- Code Sample: Programmatically Download File Using C#
- Windows 7 Control Panel In Classic Mode
- More Details Emerge On Microsoft Master Certification
- Use SqlConnection With LINQ To SQL
- Free Icons And Images With Visual Studio 2008
- Capture XML In WCF Service
- Dynamic Sort With LINQ
- StyleCop Tutorial
Tags
.Net 2010 ADO.NET ASP.NET Azure Blogging Books Browsers C# Certification Cloud Computing Code Snippets Community Data Services Eclipse Entity Framework Google IDE Java LINQ Mac Microsoft Museum NetBeans Office Oracle REST SharePoint Silverlight SQL Server T-SQL Tips Tools Training Visual Studio Visual Studio 2010 WCF Web Windows Windows 7 Windows Forms Windows Live WMI WPF XAML


Thanks for the tip. Too bad Console.Clear does not work under Vista although works fine under XP.
Thanks, just what I needed
Thanks Ed. I’m glad that you found this article helpful.
It is great. Very helpful
Thank you.
It worked.
Thanks !
Thank you for publishing this solution. I have tried several different offered solution and yours is the only one the worked the very first time. Great job!
Bob, Thanks for your motivating comment.
This worked for me after I added
using System.Runtime.InteropServices;
Thanks for the how-to.
You, sir, deserve a medal.
I’ve been to 5 different sites where people invent the most cumbersome and enormous code to accomplish what you did in a simple and elegant manner.
Thank you.
Also thanks to pgn674 for the useful comment.
OMFG, thanks and I gladly accept the medal :)
Thanks Deepak, good work
Guys can someone transfer this to c++ ?
When closing the allocated console it causes the termination of the main application.
Is there a way to prevent it?