Udostępnij za pośrednictwem


Console.WindowLeft Właściwość

Definicja

Pobiera lub ustawia najbardziej lewą pozycję obszaru okna konsoli względem buforu ekranu.

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

Wartość właściwości

Int32

Położenie okna konsoli po lewej stronie mierzone w kolumnach.

Atrybuty

Wyjątki

W operacji zestawu wartość, która ma być przypisana, jest mniejsza niż zero.

-lub-

W wyniku przypisania WindowLeft parametr plus WindowWidth przekroczy BufferWidthwartość .

Błąd podczas odczytywania lub zapisywania informacji.

Operacja ustawiania jest wywoływana w systemie operacyjnym innym niż Windows.

Przykłady

Poniższy przykład otwiera okno konsoli 80-kolumnowej i definiuje obszar buforu o szerokości 120 kolumn. Wyświetla informacje o rozmiarze okna i buforu, a następnie czeka na użytkownika, aby nacisnąć klawisz STRZAŁKA W LEWO lub KLAWISZ STRZAŁKA W PRAWO. W pierwszym przypadku dekrementuje wartość WindowLeft właściwości o jedną, jeśli wynik jest wartością prawną. W drugim przypadku zwiększa wartość WindowLeft nieruchomości o jedną, jeśli wynik byłby legalny. Należy pamiętać, że przykład nie musi obsługiwać ArgumentOutOfRangeExceptionobiektu , ponieważ sprawdza, czy wartość, która ma zostać przypisana do WindowLeft właściwości, nie jest ujemna i nie powoduje, że suma WindowLeft właściwości i WindowWidth przekroczy BufferWidth wartość właściwości.

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

Uwagi

Konsola reprezentuje prostokątne okno w większym prostokątnym obszarze buforu. Zarówno okno, jak i bufor są mierzone pionowo według ich liczby wierszy i poziomo według ich liczby kolumn. Wymiary obszaru buforu są definiowane przez BufferHeight właściwości i BufferWidth . Wymiary obszaru konsoli są definiowane przez WindowHeight właściwości i WindowWidth . Właściwość WindowLeft określa, która kolumna obszaru buforu jest wyświetlana w pierwszej kolumnie okna konsoli. Wartość WindowLeft właściwości może wahać się od 0 do - BufferWidthWindowWidth . Próba ustawienia jej na wartość spoza tego zakresu zgłasza wartość ArgumentOutOfRangeException.

Po pierwszym otwarciu okna konsoli wartość WindowLeft domyślna właściwości to zero, która wskazuje, że pierwsza kolumna wyświetlana przez konsolę odpowiada pierwszej kolumnie (kolumnie na pozycji zero) w obszarze buforu. Domyślna szerokość okna konsoli i obszaru buforu to 80 kolumn. Oznacza to, że właściwość można zmodyfikować tylko wtedy, WindowLeft gdy okno konsoli jest węższe lub obszar buforu jest szerszy.

Należy pamiętać, że jeśli szerokość obszaru buforu przekracza szerokość okna konsoli, wartość WindowLeft właściwości jest automatycznie dostosowywana, gdy użytkownik używa poziomego paska przewijania w celu zdefiniowania relacji okna z obszarem buforu.

Próba ustawienia wartości WindowLeft właściwości, gdy dane wyjściowe są przekierowywane, zgłasza IOException wyjątek. Aby zapobiec wyjątkowi, można ustawić wartość tej właściwości tylko wtedy, gdy IsOutputRedirected właściwość zwróci wartość false.

Dotyczy