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")>]
static member WindowLeft : int with get, set
static member WindowLeft : int with get, set
Public Shared Property WindowLeft As Integer
Значение свойства
Самая левая позиция окна консоли, измеряемая в столбцах.
- Атрибуты
Исключения
В операции набора присваиваемое значение меньше нуля.
–или–
В результате назначения 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.");
}
}
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
Комментарии
Консоль представляет прямоугольное окно в большую прямоугольную буферную область. Окно и буфер измеряются по вертикали по количеству строк и по горизонтали по количеству столбцов. Размеры буферной области определяются свойствами и BufferWidth свойствамиBufferHeight. Измерения области консоли определяются свойствами и WindowWidth свойствамиWindowHeight. Свойство WindowLeft определяет, какой столбец буферной области отображается в первом столбце окна консоли. Значение WindowLeft свойства может варьироваться от 0 до - BufferWidthWindowWidth . При попытке задать его значение за пределами этого диапазона вызывается ArgumentOutOfRangeException.
При первом открытии окна консоли значение WindowLeft свойства по умолчанию равно нулю, указывающее, что первый столбец, отображаемый консолью, соответствует первому столбцу (столбцу с нулевым положением) в буферной области. Ширина окна консоли по умолчанию и буферной области составляет 80 столбцов. Это означает, что свойство можно изменить только в том случае, WindowLeft если окно консоли становится более узким или буферная область становится более широкой.
Обратите внимание, что если ширина буферной области превышает ширину окна консоли, значение WindowLeft свойства автоматически настраивается, когда пользователь использует горизонтальную полосу прокрутки для определения связи окна с буферной областью.
Попытка задать значение свойства при перенаправлении выходных WindowLeft данных вызывает IOException исключение. Чтобы предотвратить исключение, можно задать значение этого свойства только в том случае, если IsOutputRedirected свойство возвращается false.