How to clear the Console window programmatically by using Visual C#

Article translations Article translations
Article ID: 319257 - View products that this article applies to.
This article was previously published under Q319257
Expand all | Collapse all

On This Page

SUMMARY

This step-by-step article demonstrates how to clear the Console window programmatically by using Visual C#.

Sample Program

  1. Start Microsoft Visual Studio.
  2. Create a new Visual C# Console Application project.
  3. Paste the following using statement at the top of the default class:
       using nsClearConsole;
    					
  4. Paste the following code in the Main procedure of the Console application:
    static void Main(string[] args)
    {
       ClearConsole ClearMyConsole = new ClearConsole();
       Console.WriteLine("THIS IS FIRST LINE");  // Some text
       Console.WriteLine("THIS IS SECOND LINE"); // Some text 
       Console.WriteLine("THIS IS THIRD LINE");  // Some text
       Console.WriteLine("THIS IS FOURTH LINE"); // Some text  
       Console.WriteLine("THIS IS FIFTH LINE");  // Some text
       Console.WriteLine("Hit Enter to Clear");  // Some text
       Console.ReadLine();  // Wait for user input
       ClearMyConsole.Clear(); // Clear the screen
       Console.WriteLine("THE CONSOLE WAS CLEARED");  // Some text to clear console
       Console.WriteLine("Hit Enter to Terminate");  //Some text
       Console.ReadLine();  // Wait for user input
    }
    					
  5. On the Project menu, click Add Class.
  6. In the Add New Item dialog box, select Class, and then click Add.
  7. Replace all of the existing code in the new class with the following code:
       using System;
       using System.Runtime.InteropServices;
    
       namespace nsClearConsole
       {
          /// <summary>
          /// Summary description for ClearConsole.
          /// </summary><BR/>
          public class ClearConsole
          {		
             private const int STD_OUTPUT_HANDLE  = -11;
    	 private const byte EMPTY = 32;
    
             [StructLayout(LayoutKind.Sequential)]
             struct COORD
             {
                public short x;
                public short y;
             }
    
             [StructLayout(LayoutKind.Sequential)]
             struct SMALL_RECT
             {
                public short Left;
                public short Top;
                public short Right;
                public short Bottom;
             }
    		
             [StructLayout(LayoutKind.Sequential)]
             struct	CONSOLE_SCREEN_BUFFER_INFO
             {
                public COORD dwSize;
                public COORD dwCursorPosition;
                public int wAttributes;
                public SMALL_RECT srWindow;
                public COORD dwMaximumWindowSize;
             }
    
             [DllImport("kernel32.dll", EntryPoint="GetStdHandle", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
             private static extern int GetStdHandle(int nStdHandle);
    
             [DllImport("kernel32.dll", EntryPoint="FillConsoleOutputCharacter", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
             private static extern int FillConsoleOutputCharacter(int hConsoleOutput, byte cCharacter, int nLength, COORD dwWriteCoord, ref int lpNumberOfCharsWritten);
    
             [DllImport("kernel32.dll", EntryPoint="GetConsoleScreenBufferInfo", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
             private static extern int GetConsoleScreenBufferInfo(int hConsoleOutput, ref CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);
    
             [DllImport("kernel32.dll", EntryPoint="SetConsoleCursorPosition", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
             private static extern int SetConsoleCursorPosition(int hConsoleOutput, COORD dwCursorPosition);
    
             private int hConsoleHandle;
    
             public ClearConsole()
             {
                // 
                // TODO: Add constructor logic here.
                // 
                hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
             }
    
             public void Clear()
             {
                int hWrittenChars = 0;
                CONSOLE_SCREEN_BUFFER_INFO strConsoleInfo = new CONSOLE_SCREEN_BUFFER_INFO();			
                COORD Home;		
                Home.x = Home.y = 0;
                GetConsoleScreenBufferInfo(hConsoleHandle, ref strConsoleInfo);
                FillConsoleOutputCharacter(hConsoleHandle, EMPTY, strConsoleInfo.dwSize.x * strConsoleInfo.dwSize.y, Home, ref hWrittenChars);
                SetConsoleCursorPosition(hConsoleHandle, Home);
             }
          }
       }
    
    					
  8. Press F5 to run the application. Note that the text in the Console window is cleared.

REFERENCES

For more information about console functions, visit the following Microsoft Developer Network (MSDN) Web site:
Console Functions
http://msdn2.microsoft.com/en-us/library/ms682073.aspx

Properties

Article ID: 319257 - Last Review: July 30, 2008 - Revision: 3.1
APPLIES TO
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005 Express Edition
Keywords: 
kbsweptvs2008 kbhowtomaster KB319257

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com