c# - 焦点在TextBox或ComboBox上时无法识别Keydown

时间:2016-06-13 14:53:04

标签: c# xaml

我正在尝试让F4打开另一个窗口,但是我设置了一些窗口,所以当它们打开时,插入设置为默认TextBoxComboBox,所以自从焦点开始是的,它没有认识到我按下了f4,但由于某种原因它确实识别其他F键。它也无法识别插入键。

我想知道如何解决这个问题

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

1 个答案:

答案 0 :(得分:4)

KeyDown是一个冒泡事件,这意味着它首先在当前UIElement中触发,如果未处理,则向父元素“冒泡”。在这种情况下,许多UI元素处理F4以打开下拉列表或执行各种其他任务。由于ComboBoxTextBox本身正在处理事件,因此它不会冒泡到窗口,因此窗口的KeyDown处理程序不会触发。

如果您希望窗口覆盖其子元素,则应使用PreviewKeyDown代替。这是一个隧道事件,这意味着父控件的处理程序首先被触发,如果没有处理,则隧道向下到子控件。

有关隧道和冒泡事件的详细信息,请参阅this answer