Console.WindowLeft Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece la posición más a la izquierda del área de la ventana de la consola con respecto al búfer de pantalla.
public:
static property int WindowLeft { int get(); void set(int value); };
public static int WindowLeft { get; [System.Runtime.Versioning.SupportedOSPlatform("windows")] set; }
public static int WindowLeft { get; set; }
[<set: System.Runtime.Versioning.SupportedOSPlatform("windows")>]
member this.WindowLeft : int with get, set
member this.WindowLeft : int with get, set
Public Shared Property WindowLeft As Integer
Valor de propiedad
Posición más a la izquierda de la ventana de la consola, medida en columnas.
- Atributos
Excepciones
En una operación set, el valor que se asigna es menor que cero.
O bien
Como resultado de la asignación, WindowLeft más WindowWidth superaría BufferWidth.
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 abre una ventana de consola de 80 columnas y se define un área de búfer que tiene 120 columnas de ancho. Muestra información sobre el tamaño de ventana y búfer y, a continuación, espera a que el usuario presione la tecla FLECHA IZQUIERDA o la tecla FLECHA DERECHA. En el caso anterior, disminuye el valor de la WindowLeft propiedad por uno si el resultado es un valor legal. En el último caso, aumenta el valor de la WindowLeft propiedad por uno si el resultado sería legal. Tenga en cuenta que el ejemplo no tiene que controlar , ArgumentOutOfRangeExceptionya que comprueba que el valor que se va a asignar a la WindowLeft propiedad no es negativo y no hace que la suma de las WindowLeft propiedades y WindowWidth supere el valor de propiedad BufferWidth .
using namespace System;
void ShowConsoleStatistics()
{
Console::WriteLine("Console statistics:");
Console::WriteLine(" Buffer: {0} x {1}", Console::BufferHeight, Console::BufferWidth);
Console::WriteLine(" Window: {0} x {1}", Console::WindowHeight, Console::WindowWidth);
Console::WriteLine(" Window starts at {0}.", Console::WindowLeft);
Console::WriteLine("Press <- or -> to move window, Ctrl+C to exit.");
}
int main()
{
ConsoleKeyInfo key;
bool moved = false;
Console::BufferWidth = 120;
Console::Clear();
ShowConsoleStatistics();
do {
key = Console::ReadKey(true);
if (key.Key == ConsoleKey::LeftArrow)
{
int pos = Console::WindowLeft - 1;
if (pos >= 0 && pos + Console::WindowWidth <= Console::BufferWidth)
{
Console::WindowLeft = pos;
moved = true;
}
}
else if (key.Key == ConsoleKey::RightArrow)
{
int pos = Console::WindowLeft + 1;
if (pos + Console::WindowWidth <= Console::BufferWidth)
{
Console::WindowLeft = pos;
moved = true;
}
}
if (moved)
{
ShowConsoleStatistics();
moved = false;
}
Console::WriteLine();
} while (true);
}
using System;
public class Example
{
public static void Main()
{
ConsoleKeyInfo key;
bool moved = false;
Console.BufferWidth += 4;
Console.Clear();
ShowConsoleStatistics();
do
{
key = Console.ReadKey(true);
if (key.Key == ConsoleKey.LeftArrow)
{
int pos = Console.WindowLeft - 1;
if (pos >= 0 && pos + Console.WindowWidth <= Console.BufferWidth)
{
Console.WindowLeft = pos;
moved = true;
}
}
else if (key.Key == ConsoleKey.RightArrow)
{
int pos = Console.WindowLeft + 1;
if (pos + Console.WindowWidth <= Console.BufferWidth)
{
Console.WindowLeft = pos;
moved = true;
}
}
if (moved)
{
ShowConsoleStatistics();
moved = false;
}
Console.WriteLine();
} while (true);
}
private static void ShowConsoleStatistics()
{
Console.WriteLine("Console statistics:");
Console.WriteLine(" Buffer: {0} x {1}", Console.BufferHeight, Console.BufferWidth);
Console.WriteLine(" Window: {0} x {1}", Console.WindowHeight, Console.WindowWidth);
Console.WriteLine(" Window starts at {0}.", Console.WindowLeft);
Console.WriteLine("Press <- or -> to move window, Ctrl+C to exit.");
}
}
open System
let showConsoleStatistics () =
printfn "Console statistics:"
printfn $" Buffer: {Console.BufferHeight} x {Console.BufferWidth}"
printfn $" Window: {Console.WindowHeight} x {Console.WindowWidth}"
printfn $" Window starts at {Console.WindowLeft}."
printfn "Press <- or -> to move window, Ctrl+C to exit."
Console.BufferWidth <- Console.BufferWidth + 4
Console.Clear()
showConsoleStatistics ()
let mutable moved = false
while true do
let key = Console.ReadKey true
if key.Key = ConsoleKey.LeftArrow then
let pos = Console.WindowLeft - 1
if pos >= 0 && pos + Console.WindowWidth <= Console.BufferWidth then
Console.WindowLeft <- pos
moved <- true
elif key.Key = ConsoleKey.RightArrow then
let pos = Console.WindowLeft + 1
if pos + Console.WindowWidth <= Console.BufferWidth then
Console.WindowLeft <- pos
moved <- true
if moved then
showConsoleStatistics ()
moved <- false
printfn ""
Module Example
Public Sub Main()
Dim key As ConsoleKeyInfo
Dim moved As Boolean = False
Console.BufferWidth = 120
Console.Clear()
ShowConsoleStatistics()
Do While True
key = Console.ReadKey(True)
If key.Key = ConsoleKey.LeftArrow Then
Dim pos As Integer = Console.WindowLeft - 1
If pos >= 0 And pos + Console.WindowWidth <= Console.BufferWidth Then
Console.WindowLeft = pos
moved = True
End If
ElseIf key.Key = ConsoleKey.RightArrow Then
Dim pos As Integer = Console.WindowLeft + 1
If pos + Console.WindowWidth <= Console.BufferWidth Then
Console.WindowLeft = pos
moved = True
End If
End If
If moved Then ShowConsoleStatistics() : moved = False
Console.WriteLine()
Loop
End Sub
Private Sub ShowConsoleStatistics()
Console.WriteLine("Console statistics:")
Console.WriteLine(" Buffer: {0} x {1}", Console.BufferHeight, Console.BufferWidth)
Console.WriteLine(" Window: {0} x {1}", Console.WindowHeight, Console.WindowWidth)
Console.WriteLine(" Window starts at {0}.", Console.WindowLeft)
Console.WriteLine("Press <- or -> to move window, Ctrl+C to exit.")
End Sub
End Module
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 WindowLeft propiedad determina qué columna del área de búfer se muestra en la primera columna de la ventana de la consola. El valor de la WindowLeft propiedad puede oscilar entre 0 y BufferWidth - WindowWidth. Si se intenta establecer en un valor fuera de ese intervalo, se produce una ArgumentOutOfRangeExceptionexcepción .
Cuando se abre por primera vez una ventana de consola, el valor predeterminado de la WindowLeft propiedad es cero, lo que indica que la primera columna mostrada por la consola corresponde a la primera columna (la columna en la posición cero) en el área de búfer. El ancho predeterminado de la ventana de la consola y el área de búfer es de 80 columnas. Esto significa que la WindowLeft propiedad solo se puede modificar si la ventana de la consola se hace más estrecha o el área de búfer se hace más ancha.
Tenga en cuenta que si el ancho del área de búfer supera el ancho de la ventana de la consola, el valor de la WindowLeft propiedad se ajusta automáticamente cuando el usuario usa la barra de desplazamiento horizontal para definir la relación de la ventana con el área de búfer.
Al intentar establecer el valor de la WindowLeft 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
.