Ағылшын тілінде оқу

Бөлісу құралы:


Console.WindowTop Свойство

Определение

Важно!

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Возвращает или задает позицию верхнего края области окна консоли относительно буфера экрана.

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

Значение свойства

Позиция верхнего края области окна консоли измеряется строками.

Атрибуты

Исключения

В операции над множеством назначаемое значение меньше нуля.

-или-

Как результат назначения, свойство WindowTop плюс свойство WindowHeight превысят свойство BufferHeight.

Ошибка при чтении или записи данных.

Операция задания вызывается в операционной системе, отличной от Windows.

Примеры

В следующем примере демонстрируются WindowLeftсвойства , WindowTop, WindowWidth, WindowHeightBufferWidth, BufferHeight, и CursorVisible , а также SetWindowPositionметоды , SetBufferSizeи ReadKey . В этом примере в буфере экрана рисуется шаблон сетки на основе ширины буфера экрана. Затем в примере окно консоли перемещается в ответ на нажатие клавиши консоли СТРЕЛКА ВВЕРХ, СТРЕЛКА ВНИЗ, СТРЕЛКА ВЛЕВО или СТРЕЛКА ВПРАВО. Шаблон сетки позволяет увидеть перемещение окна консоли относительно буфера экрана.

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

...

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

*/

Комментарии

Консоль представляет прямоугольное окно в большую прямоугольную буферную область. Как окно, так и буфер измеряются по вертикали по количеству строк, а по горизонтали — по количеству столбцов. Размеры буферной области определяются свойствами BufferHeight и BufferWidth . Размеры области консоли определяются свойствами WindowHeight и WindowWidth . Свойство WindowTop определяет, какая строка буферной области отображается в первом столбце окна консоли. Значение WindowTop свойства может варьироваться от 0 до - BufferHeightWindowHeight . Попытка присвоить ему значение за пределами этого диапазона вызывает исключение ArgumentOutOfRangeException.

Попытка задать значение свойства при перенаправлении WindowTop выходных данных вызывает IOException исключение. Чтобы предотвратить исключение, можно задать значение этого свойства только в том IsOutputRedirected случае, если свойство возвращает false.

Применяется к

Өнім Нұсқалар
.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