如何在 wpf 中模拟按 F2 按钮,键盘焦点位于树视图上
本文关键字:焦点 键盘 于树 视图 按钮 F2 wpf 模拟 | 更新日期: 2023-09-27 18:34:15
我正在尝试以下方法:
// Key to send
var key = Key.F2;
// Event to send
var routedEvent = Keyboard.KeyDownEvent;
TreeControl.RaiseEvent(
new KeyEventArgs(
Keyboard.PrimaryDevice,
PresentationSource.FromVisual(TreeControl),
0,
key) { RoutedEvent = routedEvent }
);
但是我无法以编程方式模拟 F2,尽管TreeControl
具有键盘焦点,并且如果我在手动后立即按 F2,它可以正常工作。请帮忙。
我正在尝试在调用处理程序OnItemSelected
调用此代码(并非总是在必要时)。
这是我的代码:
// First: PreviewKeyDown
KeyEventArgs previewArgs =
new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource,
0, Key.Down);
previewArgs.RoutedEvent = Keyboard.PreviewKeyDownEvent;
focusedTextBox.RaiseEvent(previewArgs);
// Second: KeyDown
IInputElement newFocusedElement = Keyboard.FocusedElement;
KeyEventArgs args =
new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource,
0, Key.Down);
args.RoutedEvent = Keyboard.KeyDownEvent;
newFocusedElement.RaiseEvent(args);
反正你和我的没有太大区别......
最初发布的代码是正确的,我发现它正确地模拟了树视图的 F2 按。只是与此无关的另一个问题阻止了我看到这一点。
当我尝试从处理程序模拟 F2 单击时OnItemSelected
它不起作用,但处理程序LayoutUpdated
相同。
因此,树视图需要完全更新才能接受按键。