Console.WindowLeft Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví pozici zcela vlevo v oblasti okna konzoly vzhledem k vyrovnávací paměti obrazovky.
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
Hodnota vlastnosti
Pozice okna konzoly úplně vlevo měřená ve sloupcích
- Atributy
Výjimky
V operaci set je hodnota, která se má přiřadit, menší než nula.
-nebo-
V důsledku přiřazení by WindowLeft plus WindowWidth překročilo BufferWidth .
Chyba při čtení nebo zápisu informací.
Operace set se vyvolá v jiném operačním systému než Windows.
Příklady
Následující příklad otevře okno konzoly s 80 sloupci a definuje oblast vyrovnávací paměti, která má šířku 120 sloupců. Zobrazí informace o okně a velikosti vyrovnávací paměti a potom počká, až uživatel stiskne klávesu ŠIPKA VLEVO nebo ŠIPKA DOPRAVA. V prvním případě se hodnota vlastnosti sníží o jednu, pokud je výsledkem WindowLeft právní hodnota. V druhém případě se hodnota vlastnosti zvýší o jednu, pokud WindowLeft by byl výsledek právní. Všimněte si, že příklad nemusí zpracovávat , protože kontroluje, zda hodnota, která má být přiřazena k vlastnosti, není záporná a nezpůsobuje, že součet vlastností a překročí ArgumentOutOfRangeException WindowLeft hodnotu WindowLeft WindowWidth BufferWidth vlastnosti.
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
Poznámky
Konzola představuje obdélníkové okno v oblasti větší obdélníkové vyrovnávací paměti. Okno i vyrovnávací paměť se měří vertikálně podle počtu řádků a vodorovně podle jejich počtu sloupců. Rozměry oblasti vyrovnávací paměti jsou definovány BufferHeight BufferWidth vlastnostmi a. Rozměry oblasti konzoly jsou definovány WindowHeight WindowWidth vlastnostmi a. WindowLeftVlastnost určuje, který sloupec oblasti vyrovnávací paměti je zobrazen v prvním sloupci okna konzoly. Hodnota WindowLeft vlastnosti může být v rozsahu od 0 do BufferWidth - WindowWidth . Pokus o jeho nastavení na hodnotu mimo tento rozsah vyvolá ArgumentOutOfRangeException .
Po prvním otevření okna konzoly je výchozí hodnota WindowLeft vlastnosti nula, což znamená, že první sloupec zobrazený konzolou odpovídá prvnímu sloupci (na pozici nula) v oblasti vyrovnávací paměti. Výchozí šířka okna konzoly i oblasti vyrovnávací paměti jsou 80 sloupce. To znamená, že WindowLeft vlastnost lze změnit pouze v případě, že je okno konzoly zúžené nebo je velikost vyrovnávací paměti nastavena na širší.
Všimněte si, že pokud Šířka oblasti vyrovnávací paměti překračuje šířku okna konzoly, hodnota WindowLeft vlastnosti se automaticky upraví, když uživatel použije vodorovný posuvník k definování vztahu okna k oblasti vyrovnávací paměti.
Při pokusu o nastavení hodnoty WindowLeft vlastnosti při přesměrování výstupu vyvolá IOException výjimku. Chcete-li zabránit výjimce, můžete hodnotu této vlastnosti nastavit pouze v případě, že IsOutputRedirected vlastnost vrátí false
.