【问题标题】:c# - not recognizing Keydown when the focus is on a TextBox or ComboBoxc# - 当焦点位于 TextBox 或 ComboBox 时不识别 Keydown
【发布时间】:2016-06-13 14:53:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# xaml


    【解决方案1】:

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

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

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

    【讨论】:

    • @RickS 将其标记为答案(您投票的位置下方的复选标记图标),并给这个家伙他的信任,并让其他读者知道它已排序。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多