【问题标题】:Winform keyboard managementWinform 键盘管理
【发布时间】:2009-07-21 22:18:47
【问题描述】:

我想控制我的 winform 应用程序的焦点。它由一个自定义列表框和其他几个组件组成。 我希望所有键盘事件都由我的窗口处理程序管理,以避免特定的控制键处理(例如,当我按下一个字符并且列表框被聚焦时,选择了以对应字母开头的项目,这不是正确的行为对于我的应用程序)。 我怎样才能做到这一点?

【问题讨论】:

    标签: c# winforms focus keyboard-events


    【解决方案1】:

    确保表单的 KeyPreview 属性设置为 true。那么这段代码应该可以取消你的关键事件到列表框...

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (this.ActiveControl == listBox1)
            e.Handled = true;
    }
    

    KeyPress 事件可能不适用于所有场景。在这种情况下,我会尝试 KeyDown 事件。

    【讨论】:

    • 将 e.Handled 设置为 true 会丢弃按键吗?
    • 是的。基本上,您是在告诉事件您处理了关键事件并且您不希望它对它做任何事情。
    • 事实上,我使用了 KeyDown 来处理以下两种情况: - 键入字符时,未选择列表项。 - 当点击向上/向下箭头时,列表项选择不会改变 请编辑您的答案,以便我将其标记为已接受。
    • 嗯。您使用的是什么版本的框架/视觉工作室?处理 KeyDown 仅适用于我的向上/向下箭头。如果我不想让字母选择列表框项目,我必须处理 KeyPress。您使用的是开箱即​​用的列表框控件吗?
    猜你喜欢
    • 2016-03-21
    • 2010-10-31
    • 2016-03-25
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多