如何在 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调用此代码(并非总是在必要时)。

如何在 wpf 中模拟按 F2 按钮,键盘焦点位于树视图上

这是我的代码:

// 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相同。

因此,树视图需要完全更新才能接受按键。