improve:快捷键

This commit is contained in:
2025-08-24 02:30:38 +08:00
parent 365459f649
commit b7c52842f2
+45
View File
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Windows.Input;
using System.IO;
using System.Reflection;
using Newtonsoft.Json;
using NHotkey.Wpf;
@@ -66,6 +67,13 @@ namespace Ink_Canvas.Helpers
{
try
{
// 检查是否处于选择模式,如果是则不拦截键盘操作
if (IsInSelectMode())
{
LogHelper.WriteLogToFile($"快捷键 {hotkeyName} 在选择模式下被忽略", LogHelper.LogType.Info);
return;
}
// 确保在主线程中执行
_mainWindow.Dispatcher.Invoke(() =>
{
@@ -550,6 +558,43 @@ namespace Ink_Canvas.Helpers
return null;
}
}
/// <summary>
/// 检查当前是否处于选择模式
/// </summary>
/// <returns>如果处于选择模式则返回true,否则返回false</returns>
private bool IsInSelectMode()
{
try
{
// 通过反射访问主窗口的inkCanvas属性
var inkCanvasProperty = _mainWindow.GetType().GetProperty("inkCanvas",
BindingFlags.NonPublic | BindingFlags.Instance);
if (inkCanvasProperty != null)
{
var inkCanvas = inkCanvasProperty.GetValue(_mainWindow);
if (inkCanvas != null)
{
// 通过反射访问EditingMode属性
var editingModeProperty = inkCanvas.GetType().GetProperty("EditingMode");
if (editingModeProperty != null)
{
var editingMode = editingModeProperty.GetValue(inkCanvas);
// 检查是否为选择模式
return editingMode != null && editingMode.ToString() == "Select";
}
}
}
return false;
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"检查选择模式状态时出错: {ex.Message}", LogHelper.LogType.Warning);
return false;
}
}
#endregion
#region IDisposable Implementation