最近寫了一個隨機模擬的計算程序,因為計算耗時很長,所以運算中要輸出一些信息,以方便用戶隨時了解運算的進度以及其他信息。因此作者使用控制臺作為輸出窗口,小小技巧也是一種比較方便的方法。
最初打算寫一個log窗口類,使用textbox控件以及 progressbar,后來發(fā)現(xiàn)挺麻煩,遠不及console窗口下的console.write和console.writeline方便。于是嘗試直接將信息輸出到控制臺窗口。
1、 在winform程序中調(diào)用console窗口。這個使用Win32 API來完成。關(guān)于AllocConsole函數(shù)和FreeConsole函數(shù)的詳細信息可以參見這里和這里。VB.NET的代碼如下:
Form程序調(diào)用和釋放Console窗口 1 Public Class ConsoleHelperClass ConsoleHelper 2 ‘調(diào)用控制臺窗口 3 _ 4 Public Shared Function AllocConsole()Function AllocConsole() As Boolean 5 End Function 6 7 ’釋放控制臺窗口 8 _ 9 Public Shared Function FreeConsole()Function FreeConsole() As Boolean 10 End Function 11 End Class
在調(diào)用AllocConsole后,就將console窗口調(diào)配給當(dāng)前進程使用,在當(dāng)前進程的任何位置我們都可以 使用console.write和console.writeline函數(shù)進行程序信息的輸出了。 |
2、 console窗口下繪制一個進度條。
;1' 先繪制出進度條的底色。 2 Private Sub Init()Sub Init() 3 Console.WriteLine(”開始計算:” & Date.Now.ToLongDateString & Date.Now.ToLongTimeString) 4 ‘繪制一個進度條背景 5 Console.BackgroundColor = ConsoleColor.DarkCyan 6 For i As Integer = 0 To 99 7 Console.Write(” “) 8 Next 9 Console.BackgroundColor = ConsoleColor.Black 10 Console.WriteLine() 11 End Sub 12 13' 2.b 根據(jù)計算線程的進度繪制進度條 14 Dim SumProg as Integer 15 Private Sub DrawProgressBar()Sub DrawProgressBar 16 SumProg += 1 17 Console.Write(”{0}%”, SumProg) 18 Console.SetCursorPosition(0, Console.CursorTop - 1) 19 Console.BackgroundColor = ConsoleColor.Yellow 20 For p As Integer = 0 To SumProg - 1 21 Console.Write(” “) 22 Next 23 Console.BackgroundColor = ConsoleColor.Black 24 Console.WriteLine() 25 End Sub |
下面是一張效果截圖。

【編輯推薦】
- C#在WinForm開發(fā)中Label換行方法
- C#中使用多線程訪問Winform問題解決方案
- 體驗VS.NET 2005的winform新功能