我有一个文本框,一个DataGrid和一个按钮。
当文本框获得焦点时,DataGrid是可见的。 用户在文本框中写入一些文本,并选择DataGrid的第一列中的匹配文本。
当用户按下回车键时,所选行的第一列的值将传输到文本框,然后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
时,我想要相同的行为。
这是执行此操作的代码,但它不起作用。我的意思是它选择Selected Row的First Column的Value并将其传递给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
,但它不起作用。