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]

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

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!