0

テキストボックス、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が、うまくいきません。

4

0 に答える 0