Feedback

C# - Console löschen

Veröffentlicht von am 19.06.2006
(2 Bewertungen)
Löscht den kompletten Inhalt bei einer Consolenanwendung im .NET Framework 1.1
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) - Komplett 

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

using System;
using System.Runtime.InteropServices;

// Klasse zum löschen des Konsoleninhalt 
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()
  {
    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);
  }
}

// Beispielafruf:
// ClearConsole clearCon = new ClearConsole();
// clearCon.Clear();
Abgelegt unter löscht, inhalt, löschen, console, cls, clear, screen.

3 Kommentare zum Snippet

Jan Welker schrieb am 14.07.2006:
Im .NET Framework 2.0 funktioniert auch
Console.Clear()
herbivore schrieb am 10.12.2006:
Wenn man wirklich Spaß mit der Console haben möchte, sollte man .NET 2.0 verwenden. Dort gibt es nicht nur die Clear-Methode, sondern auch viele andere Features, die man in .NET 1.x schmerzlich vermisst.
Jan Welker schrieb am 20.01.2007:
ja, zum Beispiel Farbe :-)
 

Logge dich ein, um hier zu kommentieren!