Ler em inglês

Compartilhar via


Console.WindowTop Propriedade

Definição

Importante

Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.

Obtém ou define a posição superior da área da janela do console em relação ao buffer da tela.

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

Valor da propriedade

A posição da janela do console superior é medida em linhas.

Atributos

Exceções

Em uma operação de conjuntos, o valor a ser atribuído é menor que zero.

- ou -

Como resultado da atribuição, a soma de WindowTop e WindowHeight excederá BufferHeight.

Erro na leitura ou na gravação das informações.

A operação set é invocada em um sistema operacional diferente do Windows.

Exemplos

O exemplo a seguir demonstra as WindowLeftpropriedades , , WindowTopWindowWidth, BufferWidthWindowHeight, BufferHeight, e CursorVisible , e os SetWindowPositionmétodos , SetBufferSizee ReadKey . O exemplo desenha um padrão de grade no buffer de tela com base na largura do buffer de tela. Em seguida, o exemplo move a janela do console em resposta a qual das teclas de console seta para cima, seta para baixo, seta para a esquerda ou seta para a direita é pressionada. O padrão de grade ajuda você a ver o movimento da janela do console em relação ao buffer de tela.

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.

...

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

*/

Comentários

O console representa uma janela retangular em uma área de buffer retangular maior. A janela e o buffer são medidos verticalmente pelo número de linhas e horizontalmente pelo número de colunas. As dimensões da área de buffer são definidas pelas BufferHeight propriedades e BufferWidth . As dimensões da área do console são definidas pelas WindowHeight propriedades e WindowWidth . A WindowTop propriedade determina qual linha da área de buffer é exibida na primeira coluna da janela do console. O valor da WindowTop propriedade pode variar de 0 a - BufferHeightWindowHeight . Tentar defini-lo como um valor fora desse intervalo lança um ArgumentOutOfRangeException.

Tentar definir o valor da propriedade quando a WindowTop saída é redirecionada gera uma exceção IOException . Para evitar a exceção, você poderá definir o valor dessa propriedade somente se a IsOutputRedirected propriedade retornar false.

Aplica-se a

Produto Versões
.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