WinForm程序中使⽤控制台(console)作为输出窗⼝最近写了⼀个随机模拟的计算程序,因为计算耗时很长,所以运算中要输出⼀些信息,以⽅
便⽤户随时了解运算的进度以及其他信息。最初打算写⼀个log窗⼝类,使⽤textbox控件以及progressbar,后来发现挺⿇烦,远不及console窗⼝下的console.write和console.writeline⽅
便。于是尝试直接将信息输出到控制台窗⼝。
1、在winform程序中调⽤console窗⼝。这个使⽤Win32 API来完成。关于AllocConsole函
数和FreeConsole函数的详细信息可以参见这⾥和这⾥。VB.NET的代码如下:
1Public Class ConsoleHelper
2‘调⽤控制台窗⼝
3<DllImport(”kernel32.dll”)> _
4Public Shared Function AllocConsole() As Boolean
5End Function
6
7’释放控制台窗⼝
8<DllImport(”kernel32.dll”)> _
9Public Shared Function FreeConsole() As Boolean
10End Function
11End Class
在调⽤AllocConsole后,就将console窗⼝调配给当前进程使⽤,在当前进程的任何位置我们
都可以使⽤console.write和console.writeline函数进⾏程序信息的输出了。
2、 console窗⼝下绘制⼀个进度条。
1'先绘制出进度条的底⾊。
2Private Sub Init()
3Console.WriteLine(”开始计
算:” & Date.Now.ToLongDateString & Date.Now.ToLongTimeString)
4‘绘制⼀个进度条背景
5Console.BackgroundColor = ConsoleColor.DarkCyan
6For i As Integer = 0To99
7Console.Write(” “)
8Next
9Console.BackgroundColor = ConsoleColor.Black
10Console.WriteLine()
11End Sub
12
13'2.b 根据计算线程的进度绘制进度条
14Dim SumProg as Integer
15Private Sub DrawProgressBar
16SumProg += 1
17Console.Write(”{0}%”, SumProg)
18Console.SetCursorPosition(0, Console.CursorTop - 1)
19Console.BackgroundColor = ConsoleColor.Yellow
20For p As Integer = 0To SumProg - 1
21Console.Write(” “)
22Nextwriteline函数
23Console.BackgroundColor = ConsoleColor.Black
24Console.WriteLine()
25End Sub
下⾯是⼀张效果截图。
PS:第⼀次在园⼦发⽂章,希望⼤家多多指教。绘制进度条的代码写得很随意,主要⽬的只是想说明下思路。现在明⽩为什么⿊洞洞的console为什么⼀直不死——有时候它的确⽅便好⽤。ps1:再补充下,具体实现时,在form上提供⼀个“视图”菜单项,通过可选菜单来控制console
窗⼝的可见和隐藏(调⽤FreeConsole)。直接关闭console会直接导致进程关闭.......

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。