2017-02-15 29 views
0

<Menu>要素を持つWPFアプリケーションでAltキーを押すと、最初のメニュー項目がフォーカスされます。 この現象を防止するにはどうすればよいですか。Altキーのフォーカスを防ぐWPFのメインメニュー

私の問題は、私のウィンドウ内にmultiselectを持つScintilla.Netコンポーネントがあり、Altキーを押したまま長方形の選択をしようとすると、Altキーを押してすぐにフォーカスが失われます。

Hereは似質問ですが、残念ながらそれはWindowsフォームとWPFない

答えて

4

についてです私は、そのコンポーネントを持っていないが、それは例えばTextBox上と同じ動作するはずです。 、Key.LeftAltチェックしないことが重要である、あなたの例では

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


KeyDownイベントのためにあなたのWindowにイベントハンドラを設定します。

<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"> 

そして、分離コードで必要なキーの組み合わせをチェックKey.Systemを入力し、チェックをTextBoxから目的のタイプに変更してください。

+1

ありがとうございました。参考:ScintillaコンポーネントはWindowsFormsHost内に存在するため、WindowsFormsHostはOriginalSourceとして提供されます。 – Mikescher

関連する問題