加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

WinForm程序中使用控制台(console)作为输出窗口

发布时间:2020-12-16 23:19:30 所属栏目:大数据 来源:网络整理
导读:最近写了一个随机模拟的计算程序,因为计算耗时很长,所以运算中要输出一些信息,以方便用户随时了解运算的进度以及其他信息。最初打算写一个log窗口类,使用textbox控件以及 progressbar,后来发现挺麻烦,远不及console窗口下的console.write和console.wri

最近写了一个随机模拟的计算程序,因为计算耗时很长,所以运算中要输出一些信息,以方便用户随时了解运算的进度以及其他信息。最初打算写一个log窗口类,使用textbox控件以及 progressbar,后来发现挺麻烦,远不及console窗口下的console.write和console.writeline方便。于是尝试直接将信息输出到控制台窗口。

1、 在winform程序中调用console窗口。这个使用Win32 API来完成。关于AllocConsole函数和FreeConsole函数的详细信息可以参见这里和这里。VB.NET的代码如下:


1PublicClassConsoleHelper
2‘调用控制台窗口
3<DllImport(”kernel32.dll”)>_
4PublicSharedFunctionAllocConsole()AsBoolean
5EndFunction

6
7’释放控制台窗口
8<DllImport(”kernel32.dll”)>_
9PublicSharedFunctionFreeConsole()AsBoolean
10EndFunction

11EndClass

在调用AllocConsole后,就将console窗口调配给当前进程使用,在当前进程的任何位置我们都可以使用console.write和console.writeline函数进行程序信息的输出了。

2、 console窗口下绘制一个进度条。


1'先绘制出进度条的底色。
2PrivateSubInit()
3Console.WriteLine(”开始计算:”&Date.Now.ToLongDateString&Date.Now.ToLongTimeString)
4‘绘制一个进度条背景
5Console.BackgroundColor=ConsoleColor.DarkCyan
6ForiAsInteger=0To99
7Console.Write(”“)
8Next
9Console.BackgroundColor=ConsoleColor.Black
10Console.WriteLine()
11EndSub

12
13'2.b根据计算线程的进度绘制进度条
14DimSumProgasInteger
15PrivateSubDrawProgressBar
16SumProg+=1
17Console.Write(”{0}%”,SumProg)
18Console.SetCursorPosition(0,Console.CursorTop-1)
19Console.BackgroundColor=ConsoleColor.Yellow
20ForpAsInteger=0ToSumProg-1
21Console.Write(”“)
22Next
23Console.BackgroundColor=ConsoleColor.Black
24Console.WriteLine()
25EndSub

下面是一张效果截图。

PS:第一次在园子发文章,希望大家多多指教。绘制进度条的代码写得很随意,主要目的只是想说明下思路。现在明白为什么黑洞洞的console为什么一直不死——有时候它的确方便好用。

ps1: 再补充下,具体实现时,在form上提供一个“视图”菜单项,通过可选菜单来控制console窗口的可见和隐藏(调用FreeConsole)。直接关闭console会直接导致进程关闭.......

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读