public SettingViewModel() { Datas = ProgramData.Instance; ShowAllHotKey = ProgramData.Instance.ShowAllHotKey; HotKeyStr = ShowAllHotKey.ToString(); IsTopMostChangedCommand = new RelayCommand <bool>(IsTopMostChangedMethod); IsStartUpWithSystemChangedCommand = new RelayCommand <bool>(IsStartUpWithSystemChangedMethod); SelectionChangedCommand = new RelayCommand <SelectionChangedEventArgs>(SelectionChangedMethod); ShowAllHotKeyChangedCommand = new RelayCommand <KeyEventArgs>(ShowAllShortCutChangedMethod); ShowAllTextUsedCommand = new RelayCommand <string>(ShowAllTextUsedMethod); }
private void ShowAllTextUsedMethod(string key) { //使用了ctrl bool useCtrl = true; bool useAlt = false; bool useShift = false; EKey?useKey = null; if (key == "X") { useKey = EKey.X; } else if (key == "A") { useKey = EKey.A; } else if (key == "C") { useKey = EKey.C; } else if (key == "V") { useKey = EKey.V; } else if (key == "Z") { useKey = EKey.Z; } var oldHotKey = ShowAllHotKey; var newModel = ShowAllHotKey; newModel.IsSelectAlt = useAlt; newModel.IsSelectCtrl = useCtrl; newModel.IsSelectShift = useShift; if (useKey != null) { newModel.SelectKey = (EKey)useKey; } if (!useCtrl && !useAlt && !useShift) { return; } var hotKeyList = new ObservableCollection <HotKeyModel> { ShowAllHotKey }; HotKeySettingsManager.Instance.IsShowAllWindowHotKeyNeedChanged = true; if (!HotKeySettingsManager.Instance.RegisterGlobalHotKey(hotKeyList)) { //todo MessageBox.Show("快捷键注册失败,可能系统或其它软件存在冲突"); ShowAllHotKey = oldHotKey; } else { ShowAllHotKey = newModel; ProgramData.Instance.ShowAllHotKey = ShowAllHotKey; this.HotKeyStr = ShowAllHotKey.ToString(); //this.SettingWin.ShowAllTB.Text = ShowAllHotKey.ToString(); } return; }
private void ShowAllShortCutChangedMethod(KeyEventArgs e) { bool useCtrl = false; //(e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control; bool useAlt = false; //(e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt; bool useShift = false; //(e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift; // EKey useKey = EKey.Q; foreach (int v in Enum.GetValues(typeof(EKey))) { string keyName = Enum.GetName(typeof(EKey), v); if (e.Key.ToString() == keyName) { var useKey = (EKey)v; if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) { useCtrl = true; } if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)) { useShift = true; } if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)) { useAlt = true; } var oldHotKey = new HotKeyModel(); oldHotKey.IsSelectAlt = ShowAllHotKey.IsSelectAlt; oldHotKey.IsSelectCtrl = ShowAllHotKey.IsSelectCtrl; oldHotKey.IsSelectShift = ShowAllHotKey.IsSelectShift; oldHotKey.Name = ShowAllHotKey.Name; oldHotKey.IsUsable = ShowAllHotKey.IsUsable; oldHotKey.SelectKey = ShowAllHotKey.SelectKey; ShowAllHotKey.IsSelectAlt = useAlt; ShowAllHotKey.IsSelectCtrl = useCtrl; ShowAllHotKey.IsSelectShift = useShift; ShowAllHotKey.SelectKey = useKey; if (!useCtrl && !useAlt && !useShift) { return; } var hotKeyList = new ObservableCollection <HotKeyModel> { ShowAllHotKey }; HotKeySettingsManager.Instance.IsShowAllWindowHotKeyNeedChanged = true; if (!HotKeySettingsManager.Instance.RegisterGlobalHotKey(hotKeyList)) { //todo MessageBox.Show("快捷键注册失败,可能系统或其它软件存在冲突"); ShowAllHotKey = oldHotKey; } else { ProgramData.Instance.ShowAllHotKey = ShowAllHotKey; HotKeyStr = ShowAllHotKey.ToString(); //this.SettingWin.ShowAllTB.Text = ShowAllHotKey.ToString(); } return; } } }
private void ShowAllShortCutChangedMethod(KeyEventArgs e) { if (e.Key == Key.LeftAlt || e.Key == Key.RightAlt) { return; } if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl) { return; } if (e.Key == Key.LeftShift || e.Key == Key.RightShift) { return; } bool useCtrl = (e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control; bool useAlt = (e.KeyboardDevice.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt; bool useShift = (e.KeyboardDevice.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift; EKey useKey = EKey.Q; foreach (int v in Enum.GetValues(typeof(EKey))) { string keyName = Enum.GetName(typeof(EKey), v); if (e.Key.ToString() == keyName) { useKey = (EKey)v; } } // var OldHotKey = ShowAllHotKey; ShowAllHotKey.IsSelectAlt = useAlt; ShowAllHotKey.IsSelectCtrl = useCtrl; ShowAllHotKey.IsSelectShift = useShift; ShowAllHotKey.SelectKey = useKey; ProgramData.Instance.ShowAllHotKey = ShowAllHotKey; var hotKeyList = new ObservableCollection <HotKeyModel> { ShowAllHotKey }; if (!HotKeySettingsManager.Instance.RegisterGlobalHotKey(hotKeyList)) { MessageBox.Show("快捷键注册失败,可能与其他软件存在冲突"); // ShowAllHotKey = OldHotKey; } if (SettingWin.ShowAllTB.Text.ToString() != ShowAllHotKey.ToString()) { BindingExpression b = SettingWin.ShowAllTB.GetBindingExpression(TextBox.TextProperty); b.UpdateTarget(); } //暂时不用这个,先解决bug // SettingWin.ShowAllTB.Text = ShowAllHotKey.ToString(); //清楚当前快捷键 //todo //检测输入的快捷键是否可用 //todo //将更新的快捷键输入文本框 }