.程序代码结构

.Win32DebuggerHelper.cs
using System.Runtime.InteropServices;

/*  TODO:使用方法
Win32.AllocConsole();
Console.WriteLine(@"我是调试信息:目前已经运行到加载事件中");
*/ namespace WinFormUseConsoleToTestProgramDemo
{
/// <summary>
/// 通过控制台Console调试WinForm程序
/// LDH @ 2018-2-26
/// </summary>
public class Win32DebuggerHelper
{
[DllImport("kernel32.dll")]
public static extern bool AllocConsole(); [DllImport("kernel32.dll")]
public static extern bool FreeConsole();
}
}
.FrmMain.cs
using System;
using System.Windows.Forms; namespace WinFormUseConsoleToTestProgramDemo
{
/// <summary>
/// WinForm中使用Console控制台显示调试信息,方便调试WinForm窗体程序
/// LDH @ 2018-2-26
/// </summary>
public partial class FrmMain : Form
{
public FrmMain()
{
InitializeComponent();
} #region 无边框窗体拖动API /// <summary>
/// 重写WndProc方法,实现窗体移动和禁止双击最大化
/// </summary>
/// <param name="m">Windows 消息</param>
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x4e:
case 0xd:
case 0xe:
case 0x14:
base.WndProc(ref m);
break; case 0x84: //鼠标点任意位置后可以拖动窗体
DefWndProc(ref m);
if (m.Result.ToInt32() == 0x01)
{
m.Result = new IntPtr(0x02);
}
break; case 0xA3: //禁止双击最大化
break; default:
base.WndProc(ref m);
break;
}
} #endregion /// <summary>
/// 窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmMain_Load(object sender, EventArgs e)
{
FormBorderStyle = FormBorderStyle.None;
Win32DebuggerHelper.AllocConsole();
Console.Title = @"WinForm中使用Console控制台显示调试信息,方便调试WinForm窗体程序 By LDH";
} /// <summary>
/// 计算
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCalculate_Click(object sender, EventArgs e)
{
Console.Clear();
Console.WriteLine(@"我已经运行到方法 private void btnCalculate_Click(object sender, EventArgs e)"); var textBoxNum1 = textBoxNumber1.Text.Trim();
var textBoxNum2 = textBoxNumber2.Text.Trim(); //if (string.IsNullOrEmpty(textBoxNum1))
//{
// textBoxNumber1.Focus();
// return;
//} //if (string.IsNullOrEmpty(textBoxNum2))
//{
// textBoxNumber2.Focus();
// return;
//} try
{
var num1 = Convert.ToDouble(textBoxNum1);
var num2 = Convert.ToDouble(textBoxNum2); txtResult.Text = (num1/num2).ToString("F");
}
catch (Exception ex)
{
Console.WriteLine(@"###########################################################################################");
Console.WriteLine(@"异常出现位置:{1}{0}", Environment.NewLine, ex.StackTrace);
Console.WriteLine(@"异常方法:{1}{0}", Environment.NewLine, ex.TargetSite);
Console.WriteLine(@"###########################################################################################");
}
}
}
}
.程序运行录像

使用控制台调试WinForm窗体程序的更多相关文章

  1. 【转载】Visual Studio中WinForm窗体程序如何切换.NET Framework版本

    在C#语言的WinForm窗体程序中,有时候我们需要切换WinForm窗体程序项目的.NET Framework版本号,例如从.NET Framework 4.5版本切换到.NET Framework ...

  2. 【转载】Visual Studio2017如何打包发布Winform窗体程序

    在用C#语言编写好Winform窗体程序后,最后一步的操作是将设计好的Winform程序代码进行打包以及发布成安装包.在Visual Studio2017开发工具中,打包发布WinForm程序是比较简 ...

  3. winform窗体程序运行后怎样隐藏?

    运行winform窗体,我们是怎样隐藏的呢? 例子: 1)创建简单winform窗体 2)编写隐藏窗体程序的代码 3)效果演示 1)创建一个简单的winform窗体MainForm,

  4. 新认知之WinForm窗体程序

    Windows应用程序和控制台应用程序有很大的区别 >Form1.cs  :窗体文件,程序员对窗体编写的代码一般都存放在这个文件中. >Form1.Designer.cs :窗体设计文件, ...

  5. WinForm窗体下Excel的导入

    一.Winform窗体程序的Excel的导入 把Excel导入到内存中的DataTable 方法实现: #region ExcelToDataTable public static DataTable ...

  6. winform窗体继承泛型类时,设计器无法使用解决办法

    当我们使用winform程序时,winform窗体程序和控件程序都是可以通过设计器进行控件拖拽的,但如果我们继承了一个带有泛型的form基类.那么设计器是无法使用的. 目前我没有找到根本解决的办法,但 ...

  7. WinForm窗体项目 之 MySchool管理系统终极版

    学习WinForm窗体程序也有一段时间了,今天就来尝试着来一个项目热热身~ 在我们通常使用的MySchool管理中,不外乎这几种功能:增.删.改.查.改密码 在过去的C#中确实是挺简单的,但是在学习了 ...

  8. 解决Winform应用程序中窗体背景闪烁的问题

    本文转载:https://my.oschina.net/Tsybius2014/blog/659742 我的操作系统是Win7,使用的VS版本是VS2012,文中的代码都是C#代码. 这几天遇到一个问 ...

  9. C#将exe运行程序嵌入到自己的winform窗体中

    以下例子是将Word打开,然后将它嵌入到winform窗体中,效果如下图:C将exe运行程序嵌入到自己的winform窗体中 - kingmax_res - iSport注意:该方法只适用于com的e ...

随机推荐

  1. 【Python】 html解析BeautifulSoup

    BeautifulSoup bs是个html解析模块,常用来做爬虫? ■ 安装 BeautifulSoup可以通过pip来安装,用pip install beautifulsoup4 即可.但是仅仅这 ...

  2. Nginx目录浏览功能

    要给其他人提供一个patch的下载地址,于是想用nginx的目录浏览功能来做,需要让其他人看到指定一个目录下的文件列表,然后让他自己来选择该下载那个文件:效果如图. 实现步骤:在虚拟主机配置文件里面开 ...

  3. linux --> 计算机是如何启动的?

    计算机是如何启动的? 零.boot的含义 "启动"用英语怎么说?回答是boot.boot原来的意思是靴子,"启动"与靴子有什么关系呢? 原来,这里的boot是b ...

  4. Python3 的描述符--完整例子详细解释

    ##描述符类的例子,这个例子说明了描述符和被描述符之间的关系 ##摄氏温度 class Celsius(): ## 1 描述符类 def __init__(self,value = 26.0): ## ...

  5. L2-001. 紧急救援(PAT)~最短路应用

    作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求 ...

  6. synchronized 原理分析

    synchronized 原理分析 1. synchronized 介绍    在并发程序中,这个关键字可能是出现频率最高的一个字段,他可以避免多线程中的安全问题,对代码进行同步.同步的方式其实就是隐 ...

  7. Java 密码学算法

    Java 密码学算法 候捷老师在< 深入浅出MFC 2e(电子版)>中引用林语堂先生的一句话: 只用一样东西,不明白它的道理,实在不高明 只知道How,不知道Why,出了一点小问题时就无能 ...

  8. iOS开发-添加圆角效果高效实现

    圆角(RounderCorner)是一种很常见的视图效果,相比于直角,它更加柔和优美,易于接受.但很多人并不清楚如何设置圆角的正确方式和原理.设置圆角会带来一定的性能损耗,如何提高性能是另一个需要重点 ...

  9. nyoj 对决

    对决 时间限制:1000 ms  |  内存限制:65535 KB 难度:0   描述 Topcoder 招进来了 n 个新同学,Yougth计划把这个n个同学分成两组,要求每组中每个人必须跟另一组中 ...

  10. 构建自己的 PHP 框架

    这是一个系列的文章,项目地址在这里,欢迎大家star. 这个框架前一部分比较像Yii,后一部分比较像Laravel,因为当时正在看相应框架的源码,所以会有不少借鉴参考.捂脸- 这个框架千万不要直接应用 ...