我正在尝试让F4打开另一个窗口,但是我设置了一些窗口,所以当它们打开时,插入设置为默认TextBox
或ComboBox
,所以自从焦点开始是的,它没有认识到我按下了f4,但由于某种原因它确实识别其他F键。它也无法识别插入键。
我想知道如何解决这个问题
private void wCarrierContractSurcharge_KeyDown(object sender, KeyEventArgs e)
{
CommonCode.ApplyStandardKeyShortcuts(this, e);
}
答案 0 :(得分:4)
KeyDown
是一个冒泡事件,这意味着它首先在当前UIElement
中触发,如果未处理,则向父元素“冒泡”。在这种情况下,许多UI元素处理F4以打开下拉列表或执行各种其他任务。由于ComboBox
和TextBox
本身正在处理事件,因此它不会冒泡到窗口,因此窗口的KeyDown
处理程序不会触发。
如果您希望窗口覆盖其子元素,则应使用PreviewKeyDown
代替。这是一个隧道事件,这意味着父控件的处理程序首先被触发,如果没有处理,则隧道向下到子控件。
有关隧道和冒泡事件的详细信息,请参阅this answer。