【问题标题】:How to fire both Shortcut Keys and KeyDown event? (C# Windows Form)如何触发快捷键和 KeyDown 事件? (C# Windows 窗体)
【发布时间】:2015-07-21 09:14:46
【问题描述】:

我有一个TextBox 的 KeyDown 事件,它在被调用时启动一个计时器。我还有一个粘贴MenuStripItem,我将设计视图中的 ShorcutKeys 属性设置为Ctrl + V

我注意到当用户按下快捷键(Ctrl + V)时,不会调用 KeyDown 事件。当我将 ShortcutKeys 属性设置为 None 时,通常会调用 KeyDown。当我按下Ctrl + V 时,有没有办法触发这两个事件?

我用其他的 MenuStripItem 试过了,结果是一样的。

编辑:非常感谢@Hans。当我将代码从 KeyDown 事件移动到 ProcessCmdKey 时,它运行得非常好。 (所以我认为 ProcessCmdKey 是每次按下键时调用的方法,无论它是什么)。因为您删除了以前的回答者,所以我现在无法将其标记为答案。

【问题讨论】:

    标签: c# winforms events keydown


    【解决方案1】:
    private void somethind_KeyDown(object sender, KeyEventArgs e)
    {
        if (KeyCodes.Contains(e.KeyValue) || (e.KeyCode==Keys.V && e.Control))
            e.SuppressKeyPress = false;
        else 
            e.SuppressKeyPress=true;
    }
    

    查看此键码列表:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

    我希望这会有所帮助!

    【讨论】:

    • 我的意思是当你给 menustripitem 设置一个快捷键,然后你按下那个快捷键,它会忽略 keydown 事件。我不是问如何在 keydown 事件中捕捉 Ctrl + V 键
    • 可能是因为 Ctrl+V 很好地嵌入了系统本身。
    • 不,只有在设置 MenuStripItem 的 ShortcutKeys 属性时才会忽略。
    • 我知道当你设置 MenuStripItem 的快捷键操作时他们会忽略。但是,无论这是一种新行为还是发生了某些变化,您使用的是 Windows 8.1 吗?另外,您运行的是哪个 Visual Studio 和 C# 版本?
    • 是的,我使用的是 Windows 8.1、Visual Studio 13。
    猜你喜欢
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    相关资源
    最近更新 更多