Leer en inglés

Compartir a través de


Console.WindowTop Propiedad

Definición

Obtiene o establece la posición superior del área de la ventana de la consola con respecto al búfer de pantalla.

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

Valor de propiedad

Posición superior de la ventana de la consola, medida en filas.

Atributos

Excepciones

En una operación set, el valor que se asigna es menor que cero.

o bien

Como resultado de la asignación, WindowTop más WindowHeight superaría BufferHeight.

Error al leer o escribir información.

Se invoca la operación Set en un sistema operativo distinto de Windows.

Ejemplos

En el ejemplo siguiente se muestran las WindowLeftpropiedades , WindowTop, BufferWidthBufferHeightWindowHeightWindowWidthy CursorVisible , y SetWindowPositionSetBufferSizelos métodos , y .ReadKey En el ejemplo se dibuja un patrón de cuadrícula en el búfer de pantalla en función del ancho del búfer de pantalla. A continuación, el ejemplo mueve la ventana de consola en respuesta a la que se presionan las teclas de consola flecha arriba, FLECHA ABAJO, FLECHA IZQUIERDA o FLECHA DERECHA. El patrón de cuadrícula le ayuda a ver el movimiento de la ventana de consola en relación con el búfer de pantalla.

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

...

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

*/

Comentarios

La consola representa una ventana rectangular en un área de búfer rectangular más grande. Tanto la ventana como el búfer se miden verticalmente por su número de filas y horizontalmente por su número de columnas. Las dimensiones del área de búfer se definen mediante las BufferHeight propiedades y BufferWidth . Las dimensiones del área de consola se definen mediante las WindowHeight propiedades y WindowWidth . La WindowTop propiedad determina qué fila del área de búfer se muestra en la primera columna de la ventana de la consola. El valor de la WindowTop propiedad puede oscilar entre 0 y BufferHeight - WindowHeight. Si se intenta establecer en un valor fuera de ese intervalo, se produce una ArgumentOutOfRangeExceptionexcepción .

Al intentar establecer el valor de la WindowTop propiedad cuando se redirige la salida, se produce una IOException excepción. Para evitar la excepción, puede establecer el valor de esta propiedad solo si la IsOutputRedirected propiedad devuelve false.

Se aplica a