使用控制台调试WinForm窗体程序
1.程序代码结构
2.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(); } }
3.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(@"###########################################################################################"); } } } }
4.程序运行录像
本文作者:Love In Winter
本文链接:https://www.cnblogs.com/LifeDecidesHappiness/p/8471769.html
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以扫一扫,任意打赏,您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/LifeDecidesHappiness/p/8471769.html
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以扫一扫,任意打赏,您的鼓励是博主的最大动力!


分类:
Win Form
标签:
WinForm程序调试技巧
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· 程序员转型AI:行业分析
· 为DeepSeek添加本地知识库
· 深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能
· .NET程序员AI开发基座:Microsoft.Extensions.AI