2017-02-15 17 views
0

Если я нажму кнопку Alt в приложении WPF с элементом <Menu>, первая запись меню будет сфокусирована. Как предотвратить такое поведение.Запрет Alt Key focus Mainmenu в WPF

Моя проблема в том, что у меня есть компонент Scintilla.Net с мультиселектором в моем окне, и когда я пытаюсь выбрать прямоугольный выбор (удерживая клавишу Alt), мой компонент теряет фокус, как только я позволяю клавише Alt ,

Here является вопрос похож, но, к сожалению, речь идет о Windows Forms и WPF не

ответ

4

У меня нет этого компонента, но он должен работать так же, как на TextBox, например.
Установить обработчик событий на вашем Window для KeyDown события:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication1" 
     Title="MainWindow" Height="350" Width="525" KeyDown="Window_KeyDown"> 

И проверьте комбинацию клавиш вы хотите в коде:

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.System && e.OriginalSource is TextBox) 
    { 
     e.Handled = true; 
    } 
} 

В вашем примере, важно, чтобы проверить не Key.LeftAlt, но Key.System и смените OriginalSource с TextBox на нужное вам место.

+1

Спасибо, что сработал. Для справки: поскольку компонент Scintilla живет в WindowsFormsHost, WindowsFormsHost поставляется как OriginalSource. – Mikescher

 Смежные вопросы

  • Нет связанных вопросов^_^