Condividi tramite


Console.WindowLeft Proprietà

Definizione

Ottiene o imposta la posizione più a sinistra dell'area della finestra della console relativamente al buffer dello schermo.

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

Valore della proprietà

Int32

Posizione più a sinistra della finestra della console misurata in colonne.

Attributi

Eccezioni

In un'operazione set il valore da assegnare è minore di zero.

-oppure-

In seguito all'assegnazione, la somma di WindowLeft e WindowWidth supererebbe BufferWidth.

Si è verificato un errore durante la lettura o la scrittura delle informazioni.

L'operazione set viene richiamata su un sistema operativo diverso da Windows.

Esempio

Nell'esempio seguente viene aperta una finestra della console di 80 colonne e viene definita un'area del buffer con una larghezza di 120 colonne. Visualizza informazioni sulle dimensioni della finestra e del buffer e quindi attende che l'utente premo il tasto FRECCIA SINISTRA o FRECCIA DESTRA. Nel primo caso, decrementa di uno il valore della proprietà se WindowLeft il risultato è un valore valido. Nel secondo caso, aumenta di uno il valore della WindowLeft proprietà se il risultato è valido. Si noti che l'esempio non deve gestire un oggetto , perché verifica che il valore da assegnare alla proprietà non sia negativo e non determina il superamento del valore della proprietà da parte della somma delle proprietà e ArgumentOutOfRangeException WindowLeft WindowLeft WindowWidth BufferWidth .

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

Commenti

La console rappresenta una finestra rettangolare in un'area del buffer rettangolare più grande. Sia la finestra che il buffer vengono misurati verticalmente in base al numero di righe e orizzontalmente in base al numero di colonne. Le dimensioni dell'area del buffer sono definite dalle BufferHeight proprietà BufferWidth e . Le dimensioni dell'area della console sono definite dalle WindowHeight proprietà WindowWidth e . La WindowLeft proprietà determina quale colonna dell'area del buffer viene visualizzata nella prima colonna della finestra della console. Il valore della WindowLeft proprietà può variare da 0 a BufferWidth - WindowWidth . Il tentativo di impostarlo su un valore non compreso nell'intervallo genera un'eccezione ArgumentOutOfRangeException .

Quando si apre una finestra della console per la prima volta, il valore predefinito della proprietà è zero, a indicare che la prima colonna visualizzata dalla console corrisponde alla prima colonna (la colonna nella posizione WindowLeft zero) nell'area del buffer. La larghezza predefinita della finestra della console e dell'area del buffer è di 80 colonne. Ciò significa che la proprietà può essere modificata solo se la finestra della console viene ridotta o se WindowLeft l'area del buffer è più ampia.

Si noti che se la larghezza dell'area del buffer supera la larghezza della finestra della console, il valore della proprietà viene regolato automaticamente quando l'utente usa la barra di scorrimento orizzontale per definire la relazione della finestra con WindowLeft l'area del buffer.

Il tentativo di impostare il valore della proprietà WindowLeft quando l'output viene reindirizzato genera IOException un'eccezione. Per evitare l'eccezione, è possibile impostare il valore di questa proprietà solo se IsOutputRedirected la proprietà restituisce false .

Si applica a