Compartir a través de


Console.WindowLeft Propiedad

Definición

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

Int32

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.

Se aplica a