2016-06-13 57 views
3

我想讓F4打開另一個窗口,但我有一些窗口設置爲當它們打開時,插入設置爲默認的TextBox或因爲重點在於它不能識別我按f4,但由於某種原因它確實識別了其他F鍵。它也不能識別插入鍵。c# - 當焦點位於文本框或組合框時不能識別Keydown

我想知道我怎麼能解決這個

private void wCarrierContractSurcharge_KeyDown(object sender, KeyEventArgs e) 
{ 
    CommonCode.ApplyStandardKeyShortcuts(this, e); 
} 

回答

4

KeyDown爲冒泡事件,這意味着它在當前UIElement最早被解僱,如果它沒有被處理「冒泡」的父元素。在這種情況下,許多UI元素處理F4以打開下拉菜單或執行各種其他任務。由於ComboBoxTextBox本身處理事件,因此它不會冒泡到窗口,所以窗口的KeyDown處理程序不會觸發。

如果您希望窗口覆蓋其子元素,則應該使用PreviewKeyDown代替。這是一個隧道事件,這意味着父控件的處理程序首先被觸發,如果未被處理,則向下通向子控件。

有關隧道和冒泡事件的更多信息,請參閱this answer

+0

謝謝你這個完美的工作! – RickS

+0

@RickS將它標記爲答案(您在下面選中的複選標記圖標),並給予該老兄他的榮譽,並讓其他讀者知道它已被分類。 :) –