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:没有绑定的快捷键文本的主要内容,如果未能解决你的问题,请参考以下文章
C# winforms:将可空类型绑定到其他属性(不是文本)时出错