Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad Console.WindowTop

 

Publicado: octubre de 2016

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

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static int WindowTop { get; set; }

Valor de propiedad

Type: System.Int32

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

Exception Condition
ArgumentOutOfRangeException

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

-o-

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

IOException

Error al leer o escribir información.

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

Al intentar establecer el valor de la WindowTop propiedad una vez salida redirigido produce un IOException excepción. Para evitar la excepción, puede establecer el valor de esta propiedad sólo si la IsOutputRedirected propiedad devuelve false.

En el ejemplo siguiente se muestra la WindowLeft, WindowTop, WindowWidth, WindowHeight, BufferWidth, BufferHeight, y CursorVisible propiedades; y la SetWindowPosition, SetBufferSize, y ReadKey métodos. En el ejemplo se dibuja un patrón de cuadrícula en el búfer de pantalla tomando como base el ancho del búfer de pantalla. A continuación, en el ejemplo se mueve la ventana de consola en respuesta a cuál de la flecha arriba, flecha abajo, flecha izquierda o flecha derecha de las teclas de consola se presionaron. El patrón de cuadrícula ayuda a ver el movimiento de la ventana de consola con respecto al 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.

...

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

*/

.NET Framework
Disponible desde 2.0
Volver al principio
Mostrar: