Console.WindowLeft Свойство

Определение

Возвращает или задает позицию левого края области окна консоли относительно буфера экрана.

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

Значение свойства

Int32

Позиция левого края области окна консоли измеряется столбцами.

Атрибуты

Исключения

В операции над множеством назначаемое значение меньше нуля.

-или-

Как результат назначения, свойство WindowLeft плюс свойство WindowWidth превысят свойство BufferWidth.

Ошибка при чтении или записи данных.

Операция задания вызывается в операционной системе, отличной от Windows.

Примеры

В следующем примере открывается окно консоли с 80 столбцами и определяется область буфера, которая имеет ширину 120 столбцов. Он отображает сведения о размере окна и буфера, а затем ожидает нажатия клавиши СТРЕЛКА ВЛЕВО или СТРЕЛКА ВПРАВО. В первом случае оно уменьшает значение WindowLeft свойства на одно, если результат является законным значением. В последнем случае оно увеличивает значение WindowLeft свойства на один, если результат будет законным. Обратите внимание, что в примере не требуется обрабатывать ArgumentOutOfRangeExceptionобъект, так как он проверяет, что значение, присвоенное WindowLeft свойству, не является отрицательным и не приводит к превышению BufferWidth суммы WindowLeft свойств и WindowWidth свойств.

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

Комментарии

Консоль представляет прямоугольное окно в большую прямоугольную буферную область. Окно и буфер измеряются вертикально по количеству строк и горизонтально по количеству столбцов. Измерения области буфера определяются свойствами BufferHeight и BufferWidth параметрами. Измерения области консоли определяются свойствами WindowHeight и WindowWidth параметрами. Свойство WindowLeft определяет, какой столбец области буфера отображается в первом столбце окна консоли. Значение WindowLeft свойства может находиться в диапазоне от 0 до BufferWidth - WindowWidth. Попытка присвоить ему значение за пределами этого диапазона вызывает исключение ArgumentOutOfRangeException.

При первом открытии окна консоли значение WindowLeft свойства по умолчанию равно нулю, которое указывает, что первый столбец, отображаемый консолью, соответствует первому столбцу (столбцу с нулевой позицией) в буферной области. Ширина окна консоли по умолчанию и буферной области составляет 80 столбцов. Это означает, что свойство можно изменить только в том случае, WindowLeft если окно консоли становится более узким или буферная область становится шире.

Обратите внимание, что если ширина буферной области превышает ширину окна консоли, значение WindowLeft свойства автоматически корректируется, когда пользователь использует горизонтальную полосу прокрутки для определения связи окна с буферной областью.

Попытка задать значение WindowLeft свойства при перенаправлении выходных данных вызывает IOException исключение. Чтобы предотвратить исключение, можно задать значение этого свойства только в том случае, если IsOutputRedirected свойство возвращается false.

Применяется к