簡體   English   中英

如何在WPF中模擬鍵盤焦點位於Treeview的F2按鈕?

[英]How to simulate pressing F2 button with keyboard focus on treeview in wpf?

我正在嘗試以下方法:

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

但是,盡管TreeControl具有鍵盤焦點,但我無法以編程方式模擬F2,如果在手動操作后立即按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處理程序進行的操作也很好。

因此,樹視圖需要完全更新以准備接受按鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM