2009-09-02 12 views
10

Po uruchomieniu tego kodu numer u góry okna wyjściowego to 99701. Dlaczego nie mogę uzyskać zobaczyć przez całą drogę 1? Widzę, że wszystkie numery zaczynają się wyświetlać, ale w oknie konsoli mogę tylko PRZEWIETRZAĆ wystarczająco wysoko, aby zobaczyć 99701 (zgaduję). Używam Visual C# express na Vista Home. : D(Console.BufferHeight) Nie widzę/przewijam, aby zobaczyć wszystkie dane wyjściowe konsoli za pomocą Console.WriteLine

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 
using utilities; 

namespace Testing_Project { 
    class Program { 
     static void Main(string[] args) { 
      List<string> myList = new List<string>(); 

      for (int x = 0; x < 100000; x++) 
       myList.Add(x.ToString()); 
      foreach (string s in myList) { 
       Console.WriteLine(s); 
      } 

      Console.Read(); 
     } 
    } 
} 

Console.Write (s) dobrze, ale Console.Write (s + "\ N") nie. Zgaduję, że mogę przewijać tylko tyle nowych linii?

+0

+1 dla twojego pytanie, ponieważ wielu ludzi pomyliło się;) –

Odpowiedz

25

Od .NET Framework 2.0 i poza nią, można zmienić wysokość bufora od wewnątrz własnego programu z Console.BufferHeight:


Console.BufferHeight = Int16.MaxValue - 1; // ***** Alters the BufferHeight ***** 
List<string> myList = new List<string>(); 
for (int x = 0; x < 100000; x++) 
    myList.Add(x.ToString()); 
foreach (string s in myList) { 
    Console.WriteLine(s); 
} 

Maksymalna wysokość Int16.MaxValue - 1.

+0

Hmm, rzeczywiście możesz? Dobrze wiedzieć. Wciąż za mało na 100000 przedmiotów. :) – Botz3000

+0

To doprowadza mnie do 67235, ale co ważniejsze wyjaśnia problem: D –

+0

Rock'n'Roll! : D –

11

300 wydaje się być domyślnym rozmiarem bufora konsoli. Jest to ustawienie systemu Windows i nie jest związane z aplikacją.

Możesz zmienić rozmiar bufora konsoli, tworząc skrót do pliku wykonywalnego. Następnie kliknij prawym przyciskiem myszy skrót i wybierz Właściwości. Przejdź na kartę Opcje i zmień rozmiar bufora.

Wydaje się, że nie sprawdzałem tej funkcji od dłuższego czasu, ale wydaje się, że teraz można ją modyfikować. Zobacz Alfred Myers answer

+3

Można to zmienić za pomocą Console.BufferHeight do Int16.MaxValue - 1 –

2

Nie widać więcej, ponieważ konsola nie buforuje domyślnie więcej niż 300 wierszy. Skorzystaj z okna dialogowego ustawień konsoli, aby to zmienić - I Wierzę, że możesz po prostu uruchomić wiersz polecenia i zmienić je tam, a następnie uruchomić program.

Alfred już wskazał, w jaki sposób aplikacja może zmienić wysokość bufora.

+1

Tak, jest. Można go zmienić poprzez Console.BufferHeight do Int16.MaxValue - 1 –

+0

Poprawiam się. Odpowiednio edytuję. –

2

Nie ma to nic wspólnego z C#, ale w rzeczywistości bufor wyjściowy w wierszu poleceń ma domyślnie tylko 300 linii. Możesz to zmienić w ustawieniach okna, chociaż może jest to okazja do wypróbowania implementacji bardziej "podobnej" funkcji, która wyłamuje się z pętli za każdym razem, gdy wyprowadzany jest screenful danych. Następnie, po naciśnięciu klawisza, wyświetla kolejny ekran, itp.

+0

Można to zmienić za pomocą Console.BufferHeight do Int16.MaxValue - 1 –

3

To jest konsola, a nie aplikacja.

Jako alternatywę można użyć Debug.WriteLine (System.Diagnostics) i użyć okna Output w Visual Studio. Ma znacznie większy bufor (po prostu pamiętaj, aby uruchomić kompilację debugowania).

+0

Możesz zmienić ustawienia konsoli. Można go zmienić przez Console.BufferHeight do Int16.MaxValue - 1 –

Powiązane problemy