Прочитать на английском

Поделиться через


Console.WindowLeft Свойство

Определение

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

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

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

Int32

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

Атрибуты

Исключения

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

-или-

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

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

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

Примеры

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

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.");
   }
}

Комментарии

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

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

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

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

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1