.NET CAD开发添加窗体Esc关闭事件
近期发现CAD的原生窗体都是使用ESC关闭窗体,而我创建的WPF窗体不能使用ESC关闭,经过多方面的查找总结了一下方法。
·
近期发现CAD的原生窗体都是使用ESC关闭窗体,而我创建的WPF窗体不能使用ESC关闭,经过多方面的查找总结了一下方法
/// <summary>
/// 添加Esc退出
/// </summary>
/// <param name="window">wpf窗体</param>
public static void AddEscQuit(this Window window)
{
//移除事件避免重复
window.KeyDown -= Window_KeyDown_Esc;
//添加事件
window.KeyDown += Window_KeyDown_Esc;
//关闭时移除事件
window.Closed -= WindowOnClosed;
window.Closed += WindowOnClosed;
}
/// <summary>
/// 关闭时减掉事件
/// </summary>
private static void WindowOnClosed(object? sender, EventArgs e)
{
if (sender is not Window window)
return;
window.KeyDown -= Window_KeyDown_Esc;
window.Closed -= WindowOnClosed;
}
/// <summary>
/// ESC关闭窗体
/// </summary>
private static void Window_KeyDown_Esc(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key != Key.Escape
|| sender is not Window { IsLoaded: true, IsActive: true } window)
return;
// 判断没有按住ctrl或shift或alt才执行
var keys = Control.ModifierKeys;
if ((keys & Keys.Control) != 0
|| (keys & Keys.Shift) != 0
|| (keys & Keys.Alt) != 0)
return;
window.Close();
}
更多推荐




所有评论(0)