Condividi tramite


Console.WindowLeft Proprietà

Definizione

Ottiene o imposta la posizione più a sinistra dell'area della finestra della console rispetto 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")>]
static member WindowLeft : int with get, set
static member WindowLeft : int with get, set
Public Shared Property WindowLeft As Integer

Valore della proprietà

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

Attributi

Eccezioni

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

oppure

In seguito all'assegnazione, WindowLeft più WindowWidth supererebbe BufferWidth.

Errore durante la lettura o la scrittura di informazioni.

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

Esempio

Nell'esempio seguente viene aperta una finestra della console a 80 colonne e viene definita un'area del buffer di 120 colonne a larghezza. Visualizza informazioni sulle dimensioni della finestra e del buffer e quindi attende che l'utente preme il tasto FRECCIA SINISTRA o il tasto FRECCIA DESTRA. Nel caso precedente, decrementa il valore della WindowLeft proprietà di uno se il risultato è un valore legale. In quest'ultimo caso, aumenta il valore della WindowLeft proprietà di uno se il risultato sarebbe legale. Si noti che l'esempio non deve gestire un ArgumentOutOfRangeExceptionoggetto perché verifica che il valore da assegnare alla WindowLeft proprietà non sia negativo e che la somma delle proprietà e WindowWidth superi il valore della WindowLeftBufferWidth proprietà.

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à e BufferWidth . Le dimensioni dell'area della console sono definite dalle WindowHeight proprietà e WindowWidth . 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 - BufferWidthWindowWidth . Il tentativo di impostarlo su un valore esterno a tale intervallo genera un'eccezione ArgumentOutOfRangeException.

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

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

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

Si applica a