2013-03-12 49 views
2

我想知道是否有更有效的方法來修改控制檯中的文本。例如:如果我保持已發生的事件數的軌跡,我會打印使用Visual Basic修改控制檯中的文本

0 events have occurred 

和事件發生時我想增加與0

目前,我這樣做的非常醜陋的方式: 使用String或Stringbuilder跟蹤打印到控制檯的所有內容,如果需要進行更改,請更改字符串,清除控制檯,將字符串打印到控制檯。除了可能效率不高之外,如果在很短的時間內進行太多更改,它會以醜陋的方式顯示,導致控制檯「閃爍」。

在此先感謝。

回答

2

訣竅是使用回車代碼。這基本上將光標返回到同一行的開頭。這與回車+換行(vbCrLf)不同,後者將光標置於下一行的開頭。

在VB和C#中有一些稍微不同的方法來做到這一點。

  • VB:使用vbCr代碼。

  • C#:使用\ r代碼。

下面是一些示例代碼:

VB:

For i = 1 To 100 
    Console.Write("Processing...{0}% complete " & vbCr, i) 
    System.Threading.Thread.Sleep(100) 
Next 

C#:

for (int i = 1; i <= 100; i++) 
{ 
    Console.Write("Processing... {0}% complete\r", i); 
    System.Threading.Thread.Sleep(100); 
} 
+0

讓我解釋一下,我還需要招行上下(即如果打印錯誤,我想要始終將「處理...」行保留在底部,這意味着如果發生錯誤,我需要清除公司的最後一行nsole(除非最後一行打印的是錯誤行),然後再次打印處理行。) – Pinkesz 2013-03-12 23:05:18

+1

我認爲這可能是您正在尋找的內容:http://stackoverflow.com/questions/10804233/c-how -to-修改 - 先前線的控制檯文本 – Avi 2013-03-12 23:06:34

相關問題