如何为没有文字的Windows Form按钮设定键盘快捷键字符?
我有一个Windows窗体应用程序,其中一些按钮带有图像但没有文本。通常,对于按钮,快捷方式是用“与”符号(&)指定的。但是,如果没有文本,该怎么办?
我知道有一些小技巧,比如用前导空格将文本向右或向下移动,或者玩弄字体、前景色等,但我不喜欢这些小技巧,因为它们有时会适得其反。
我是否应该考虑通过窗体的Key事件处理所有控件的快捷方式?这将如何区分哪个控件被选中?窗体的Key事件在发送到控件的Key事件之前是否通过窗体进行筛选?如果这样做,我不确定该怎么办。
3条答案
按热度按时间jslywgbw1#
当然 可以 , 在 窗体 中 覆盖 ProcessCmdKey() 。 正如 您 在 文档 中 所 读 到 的 , 它 是 为此 而 设计 的 ( * 提供 对 主 菜单 命令 键 和 MDI 加速 键 的 额外 处理 * )
若 要 将 Button 与 Key 的 比特 组合 ( Windows Form Keys 枚举 值 是 以
[Flags]
属性 装饰 ) 产生 相关 , 您 可以 使用 * map * , 通常 是 将 Key 与 其他 项目 产生 相关 的 Dictionary 。在 这种 情况 下 , 它 可以 是 Button 控件 或 Action 。 例如 :
中 的 每 一 个
在
ProcessCmdKey
覆 写 中 , 测试 map ( Dictionary ) 是否 包含 按 下 的 按钮 组合 , 如果 相符 , 则 引发 相关 Button 的 Click 事件 :格式
VB.Net 版本 ( 因为 它 已 标记 ) :
格式
ugmeyewa2#
我就是这么做的。
将表单的
KeyPreview
设置为true
以捕获密钥。然后检查表单上
KeyDown
事件上的键并触发button1.PerformClick();
f2uvfpb93#
希望这能对你有所帮助。
1.将Form KeyPreview属性设置为true。
1.订阅窗体的KeyDown事件,如下所示:
=新建系统.窗体.键事件处理程序(this.Form1_KeyDown);
1.处理Form的KeyDown事件,如下所示:
完整代码: