【问题标题】:ALT+<shortcut> precedes KeyPress events on custom textbox winform controlALT+<shortcut> 在自定义文本框 winform 控件上的 KeyPress 事件之前
【发布时间】:2009-07-23 08:53:47
【问题描述】:

我遇到了一个相当棘手的问题,我会尽量解释清楚。该控件是一个从头开始构建的文本框。它继承自 System.Windows.Forms.Control。

现在,在表单上,​​我还有一些其他的带有 & 快捷键 (ALT+) 的控件。

当非输入控件聚焦在 winforms 中时,您可以在这些快捷方式中排除 ALT,然后按 .这与我在文本框中遇到的行为完全相同。

这个结果是在 KeyPress 事件被触发之前,焦点转移到另一个控件并且 KeyPress 永远不会被触发。不过 KeyDown 事件会被触发。

我感觉我的控件未被识别为输入控件。

另一个有趣的地方是,如果我在 KeyDown 事件期间设置 SuppressKeyPress = true,焦点将停留在我的控件上,但当然也不触发 KeyPress 事件。

【问题讨论】:

  • 您的自定义文本框控件继承自什么?控制?文本框控件?还有什么?
  • 它继承自 System.Windows.Forms.Control,如上所述。我已经设法通过 hack 解决了这个问题,但我更喜欢更优雅的解决方案。

标签: c# winforms custom-controls


【解决方案1】:

您应该在您的控件中覆盖ProceeMnemonicMethod。您还可以查看ProcessDialogKeyProcessCmdKey 方法,以更好地了解WinForms 内部键盘处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多