[英]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.