Winforms:没有绑定的快捷键文本

Posted

技术标签:

【中文标题】Winforms:没有绑定的快捷键文本【英文标题】:Winforms: Short-cut key text without binding 【发布时间】:2013-07-29 04:51:19 【问题描述】:

好的,有很多方法可以解决我的问题。标题描述了一个。

问题是我使用智能文本框控件 (ScintillaNET) 制作了一个编辑器,我希望在菜单上实现一个 Edit -> Undo 按钮,该按钮还在文本中显示其快捷键。不幸的是,我不能简单地绑定它,因为它会导致 undo 事件被触发两次(一次是控件自己触发的,一次是我触发的)。

如果用户单击该按钮(而不是快捷键),我仍然需要该按钮来运行撤消。

我可以看到有 3 种方法可以解决此问题:

从 ScintillaNET 控件中取消绑定密钥(无法找到如何执行此操作)。 找到一种方法来识别按钮是否被单击或快捷键。 在没有实际应用的情况下使外观看起来像一个快捷键。

有谁知道如何做上述之一?

我不希望覆盖绘图方法等。

编辑:

我的问题有点不准确。它实际上是我需要检查的 ToolStripMenuItem。遗憾的是它没有 Focused 属性。

【问题讨论】:

你可以检查焦点。如果您的按钮未获得焦点,则该操作已通过键盘快捷键调用。 @Jcl 好答案,可惜我的问题错了:(我的意思是 ToolStripMenuItem 不是按钮。对不起。 @MrUniverse 你的问题我还是不清楚,为什么undo 会被调用两次?您应该使上下文更清晰。 找到了!我在表单的构造函数中设置了 ShortcutKeyDisplayString 而没有实际设置快捷键。 @KingKing 就像我说的,控件自己触发撤消事件。 【参考方案1】:

找到了!

我在表单的构造函数中设置了 ShortcutKeyDisplayString,而没有实际设置快捷键。

public EditorForm()

    ....
    undoToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Z";
    ....

【讨论】:

以上是关于Winforms:没有绑定的快捷键文本的主要内容,如果未能解决你的问题,请参考以下文章

在按钮控件的文本上设置多色

WinForms ALT 键蜂鸣

C# winforms:将可空类型绑定到其他属性(不是文本)时出错

如何使用打开和关闭标记包装所选文本?

有没有办法使用键盘快捷键缩放 Visual Studio 文本编辑器?

GUI按键绑定到键盘和打印组件