Sdílet prostřednictvím


Console.WindowLeft Vlastnost

Definice

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

Int32

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 .

Platí pro