From b7c52842f288d4a5690f55608e0efa8257a69204 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sun, 24 Aug 2025 02:30:38 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E5=BF=AB=E6=8D=B7=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/Helpers/GlobalHotkeyManager.cs | 45 +++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Ink Canvas/Helpers/GlobalHotkeyManager.cs b/Ink Canvas/Helpers/GlobalHotkeyManager.cs index cb5a1d21..91923e38 100644 --- a/Ink Canvas/Helpers/GlobalHotkeyManager.cs +++ b/Ink Canvas/Helpers/GlobalHotkeyManager.cs @@ -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; } } + + /// + /// 检查当前是否处于选择模式 + /// + /// 如果处于选择模式则返回true,否则返回false + 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