Auf Englisch lesen

Freigeben über


Console.WindowTop Eigenschaft

Definition

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

public static int WindowTop { get; [System.Runtime.Versioning.SupportedOSPlatform("windows")] set; }
public static int WindowTop { get; set; }

Eigenschaftswert

Die oberste Konsolenfensterposition in Zeilen.

Attribute

Ausnahmen

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.

Fehler beim Lesen oder Schreiben von Informationen.

Der set-Vorgang wird unter einem anderen Betriebssystem als Windows aufgerufen.

Beispiele

Im folgenden Beispiel werden die WindowLeftEigenschaften , WindowTop, WindowWidth, BufferWidthWindowHeight, BufferHeightund CursorVisible sowie die SetWindowPositionMethoden , SetBufferSizeund ReadKey veranschaulicht. Das Beispiel zeichnet ein Rastermuster im Bildschirmpuffer basierend auf der Bildschirmpufferbreite. Das Beispiel verschiebt dann das Konsolenfenster als Reaktion darauf, welche der Konsolentasten NACH-OBEN, NACH-UNTEN, LINKS- oder NACH-RECHTS-TASTE gedrückt wird. Das Rastermuster hilft Ihnen, die Bewegung des Konsolenfensters relativ zum Bildschirmpuffer anzuzeigen.

// 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.

...

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

*/

Hinweise

Die Konsole stellt ein rechteckiges Fenster in einen größeren rechteckigen Pufferbereich dar. Sowohl das Fenster als auch der Puffer werden vertikal anhand ihrer Anzahl von Zeilen und horizontal durch ihre Anzahl von Spalten gemessen. Die Dimensionen des Pufferbereichs werden durch die BufferHeight Eigenschaften und BufferWidth definiert. Die Dimensionen des Konsolenbereichs werden durch die WindowHeight Eigenschaften und WindowWidth definiert. Die WindowTop -Eigenschaft bestimmt, welche Zeile des Pufferbereichs in der ersten Spalte des Konsolenfensters angezeigt wird. Der Wert der WindowTop Eigenschaft kann zwischen 0 und liegen - BufferHeightWindowHeight. Wenn Sie versuchen, ihn auf einen Wert außerhalb dieses Bereichs festzulegen, wird ein ArgumentOutOfRangeExceptionausgelöst.

Der Versuch, den Wert der Eigenschaft festzulegen, wenn die WindowTop Ausgabe umgeleitet wird, löst eine Ausnahme aus IOException . Um die Ausnahme zu verhindern, können Sie den Wert dieser Eigenschaft nur festlegen, wenn die IsOutputRedirected -Eigenschaft zurückgibt false.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1