做winform开发时候,有些临时性的信息,不太适合显示到界面,但是需要依赖控制台等方式打印出来方便调试,这时候就有了今天文章中描述的场景需求。分为几个关键点的组合。
1,常规windowsForm项目:
没有控制台命令行,Console.WriteLine信息没法直接看到输出。
2,带命令行窗体的Windows Form应用程序。
在第一种场景里做一个微调:在解决方案管理器下,项目的属性里,修改输出类型为:控制台应用程序。这时候启动程序就可以同时实现显示窗体和命令行。
对于大部分开发,开发期间这么配置,发布之前把输出类型改回Windows 应用程序即可。
3,更强大的可控模式。
为了让调试变得方便,我在项目里一般更喜欢选择这个方式,我开发的窗体,默认全部是控制台应用程序。然后我通过代码,结合配置文件,启动时候默认关闭命令行,需要时候通过修改配置文件和按钮触发,打开命令行。控制命令行是否显示的代码如下
step1,引用类库:
using System.Runtime.InteropServices;
step2,调用系统函数:
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
private static extern bool ShowConsoleWindow(IntPtr hWnd, int nCmdShow);
private const int SW_HIDE = 0;//隐藏
private const int SW_NORMAL = 1;
private const int SW_MAXIMIZE = 3;
private const int SW_SHOWNOACTIVATE = 4;
private const int SW_SHOW = 5;//显示
private const int SW_MINIMIZE = 6;
private const int SW_RESTORE = 9;
private const int SW_SHOWDEFAULT = 10;
step3,代码触发方式:
//获取句柄
var handle = GetConsoleWindow();
//隐藏窗体
ShowConsoleWindow(handle, SW_HIDE);
//显示窗体
ShowConsoleWindow(handle, SW_SHOW);
这样一来,就完全可以轻松零活的使用控制台进行开发阶段的调试了。
原文地址:
https://www.opengps.cn/Blog/View.aspx?id=977
文章的更新编辑依此链接为准。欢迎关注源站原创文章!