2009-09-04 21 views
27

Uzun bir işlem gerçekleştiren bir konsol uygulamasına sahibim.. Net konsol uygulamasında yüzdesi gösteriliyor

Her% 1 tamamında için yeni bir satırda, numaralı tamamlanmış yüzdeyi yazdırıyorum.

Programın, konsol penceresinde aynı konumda tamamlanan yüzde yazdırılmasını nasıl sağlarım?

+0

Ayrıca bkz bu ilgili soru: http://stackoverflow.com/questions/888533/how-can-i-update-the-current-line-in-ac-windows -console-app –

+0

Bence backspace yöntemi, belki de en güzel (ve en taşınabilir) olsa da, biraz daha fazla çalışma gerektirecektir. –

cevap

66

Baskı \r geri satırın başlangıcına almak için (ancak bir yeni satır yazdırmak yok!) Örneğin

:

using System; 
using System.Threading; 

class Test 
{ 
    static void Main() 
    { 
     for (int i=0; i <= 100; i++) 
     { 
      Console.Write("\r{0}%", i); 
      Thread.Sleep(50); 
     } 
    } 
} 
+7

Evet, bunu yapmanın en kolay yolu budur. Satırların sonunda boşluklarla üzerine yazmayı unuttuğunuzdan (değişken uzunluktaki dizeler için kullanıyorsanız) emin olun. Örneğin. "% 99 tamamlandı" yerine "Bitti!" "Done! omplete" satırını gösterecektir - ideal değil. :) – ZombieSheep

+0

Bir hata ile bir hata var: P –

+0

Jon Skeet: Üzgünüz, yığın taşması ronnies'i doğru bir şekilde düzenlemenize geri döndürmeme izin vermiyor gibi görünüyor. Lütfen kendiniz deneyin. –

16

Sen kullanabilirsiniz:

Console.SetCursorPosition(); 

Konumu uygun şekilde ayarlamak için.

böylece gibi:

Console.Write("Hello : "); 
for(int k = 0; k <= 100; k++){ 
    Console.SetCursorPosition(8, 0); 
    Console.Write("{0}%", k); 
    System.Threading.Thread.Sleep(50); 
} 

Console.Read(); 
İlgili konular