
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();
}
}
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(@"###########################################################################################");
}
}
}
}
