テキストボックス、DataGrid、およびボタンがあります。
テキストボックスがフォーカスされると、DataGrid が表示されます。ユーザーがテキスト ボックスにテキストを書き込み、DataGrid の最初の列の一致するテキストが選択されます。
ユーザーが Enter キーを押すと、選択した行の最初の列の値がテキスト ボックスに転送され、DataGrid が非表示になり、テキスト ボックスの下のボタンがフォーカスされます。コードは次のとおりです。
If e.Key = Key.Return Then
Dim ue As FrameworkElement = e.OriginalSource
txt.Text = DataGrid1.SelectedItem(0).ToString
ue.MoveFocus(New TraversalRequest(FocusNavigationDirection.Next))
End If
このコードは正常に機能します。ユーザーが を押している間、同じ動作が必要Ctrl + Down_Arrow
です。
これを行うためのコードは次のとおりですが、機能しませんでした。つまり、選択した行の最初の列の値を選択し、それを TextBox に転送します。ただし、フォーカスはボタンに転送されません。つまり、テキストボックスはフォーカスを失いません。
If (Keyboard.IsKeyDown(Key.LeftCtrl) = True Or Keyboard.IsKeyDown(Key.RightCtrl) = True) And e.Key = Key.Down Then
Dim ue As FrameworkElement = e.OriginalSource
txt.Text = DataGrid1.SelectedItem(0).ToString
ue.MoveFocus(New TraversalRequest(FocusNavigationDirection.Down))
End If
Next
上記のコードの代わりに単語を試しましたDown
が、うまくいきません。