Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Console.WindowTop-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft die oberste Position des Konsolenfensterbereichs im Verhältnis zum Bildschirmpuffer ab oder legt diese fest.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public static int WindowTop { get; set; }

Eigenschaftswert

Type: System.Int32

Die oberste Konsolenfensterposition in Zeilen.

Exception Condition
ArgumentOutOfRangeException

In einem SET-Vorgang ist der zuzuweisende Wert kleiner als 0 (null).

- oder -

Als Ergebnis der Zuweisung würde WindowTop plus WindowHeight den Wert für BufferHeight überschreiten.

IOException

Fehler beim Lesen oder Schreiben von Informationen.

Die Konsole stellt ein rechteckiges Fenster in einem größeren rechteckigen Pufferbereich dar. Das Fenster und der Puffer werden vertikal nach deren Anzahl von Zeilen und horizontal nach deren Anzahl von Spalten gemessen. Die Dimensionen des Pufferbereichs werden definiert, durch die BufferHeight und BufferWidth Eigenschaften. Die Dimensionen der der Bereich der Konsole werden definiert, durch die WindowHeight und WindowWidth Eigenschaften. Die WindowTop Eigenschaft bestimmt, welche Zeile des Pufferbereichs in der ersten Spalte des Konsolenfensters angezeigt wird. Der Wert, der die WindowTop Eigenschaft kann im Bereich von 0 bis BufferHeight - WindowHeight. Beim Festlegen auf einen Wert außerhalb der, die im Bereich löst eine ArgumentOutOfRangeException.

Beim Festlegen des Werts der WindowTop Eigenschaft, wenn die Ausgabe umgeleitet, löst eine IOException Ausnahme. Um die Ausnahme zu verhindern, können Sie legen den Wert für diese Eigenschaft nur, wenn die IsOutputRedirected -Eigenschaft gibt false.

Das folgende Beispiel veranschaulicht die WindowLeft, WindowTop, WindowWidth, WindowHeight, BufferWidth, BufferHeight, und CursorVisible Eigenschaften und die SetWindowPosition, SetBufferSize, und ReadKey Methoden. Im Beispiel zeichnet eine Rasterstruktur im Bildschirmpuffer basierend auf die Bildschirmbreite für die Puffer. Danach verschiebt im Beispiel wird das Konsolenfenster als Antwort auf die von der nach-oben, nach-unten, links oder nach-rechts-Konsole-Taste gedrückt wird. Das Grid-Muster können Sie die Verschiebung des Konsolenfensters relativ zum Bildschirmpuffer sehen.

// This example demonstrates the Console.WindowLeft and
//                               Console.WindowTop properties.
using System;
using System.Text;
using System.IO;
//
class Sample 
{
    public static int saveBufferWidth;
    public static int saveBufferHeight;
    public static int saveWindowHeight;
    public static int saveWindowWidth;
    public static bool saveCursorVisible;
//
    public static void Main() 
    {
    string m1 = "1) Press the cursor keys to move the console window.\n" +
                "2) Press any key to begin. When you're finished...\n" +
                "3) Press the Escape key to quit.";
    string g1 = "+----";
    string g2 = "|    ";
    string grid1;
    string grid2;
    StringBuilder sbG1 = new StringBuilder();
    StringBuilder sbG2 = new StringBuilder();
    ConsoleKeyInfo cki;
    int y;
//
    try 
    {
    saveBufferWidth  = Console.BufferWidth;
    saveBufferHeight = Console.BufferHeight;
    saveWindowHeight = Console.WindowHeight;
    saveWindowWidth  = Console.WindowWidth;
    saveCursorVisible = Console.CursorVisible;
//
    Console.Clear();
    Console.WriteLine(m1);
    Console.ReadKey(true);

// Set the smallest possible window size before setting the buffer size.
    Console.SetWindowSize(1, 1);
    Console.SetBufferSize(80, 80);
    Console.SetWindowSize(40, 20);

// Create grid lines to fit the buffer. (The buffer width is 80, but
// this same technique could be used with an arbitrary buffer width.)
    for (y = 0; y < Console.BufferWidth/g1.Length; y++)
        {
        sbG1.Append(g1);
        sbG2.Append(g2);
        }
    sbG1.Append(g1, 0, Console.BufferWidth%g1.Length);
    sbG2.Append(g2, 0, Console.BufferWidth%g2.Length);
    grid1 = sbG1.ToString();
    grid2 = sbG2.ToString();

    Console.CursorVisible = false;
    Console.Clear();
    for (y = 0; y < Console.BufferHeight-1; y++)
        {
        if (y%3 == 0)
            Console.Write(grid1);
        else
            Console.Write(grid2);
        }

    Console.SetWindowPosition(0, 0);
    do
        {
        cki = Console.ReadKey(true);
        switch (cki.Key) 
            {
            case ConsoleKey.LeftArrow:
                if (Console.WindowLeft > 0) 
                    Console.SetWindowPosition(
                            Console.WindowLeft-1, Console.WindowTop);
                break;
            case ConsoleKey.UpArrow:
                if (Console.WindowTop > 0) 
                    Console.SetWindowPosition(
                            Console.WindowLeft, Console.WindowTop-1);
                break;
            case ConsoleKey.RightArrow:
                if (Console.WindowLeft < (Console.BufferWidth-Console.WindowWidth)) 
                    Console.SetWindowPosition(
                            Console.WindowLeft+1, Console.WindowTop);
                break;
            case ConsoleKey.DownArrow:
                if (Console.WindowTop < (Console.BufferHeight-Console.WindowHeight)) 
                    Console.SetWindowPosition(
                            Console.WindowLeft, Console.WindowTop+1);
                break;
            }
        } 
    while (cki.Key != ConsoleKey.Escape);  // end do-while
    } // end try
    catch (IOException e) 
        {
        Console.WriteLine(e.Message);
        }
    finally 
        {
        Console.Clear();
        Console.SetWindowSize(1, 1);
        Console.SetBufferSize(saveBufferWidth, saveBufferHeight);
        Console.SetWindowSize(saveWindowWidth, saveWindowHeight);
        Console.CursorVisible = saveCursorVisible;
        }
    } // end Main
} // end Sample
/*
This example produces results similar to the following:

1) Press the cursor keys to move the console window.
2) Press any key to begin. When you're finished...
3) Press the Escape key to quit.

...

+----+----+----+-
|    |    |    |
|    |    |    |
+----+----+----+-
|    |    |    |
|    |    |    |
+----+----+----+-

*/

.NET Framework
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: