首页 文章

如何在wpf中模拟用键盘焦点在树视图上按F2按钮?

提问于
浏览
0

我正在尝试以下方法:

// 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 处理程序时调用此代码(必要时不一定) .

2 回答

  • 0

    这是我的代码:

    // 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);
    

    无论如何,你和我之间没有太大的差别......

  • 0

    最初发布的代码是正确的,我发现它模拟F2正确按树视图 . 只是另一个与此无关的问题使我无法看到这一点 .

    当我试图从 OnItemSelected 处理程序模拟F2点击它没有工作,但从 LayoutUpdated 处理程序相同的工作正常 .

    因此,树视图需要完全更新以准备好接受按键操作 .

相关问题