从快捷键获取密钥
本文关键字:密钥 获取 快捷键 | 更新日期: 2023-09-27 18:34:07
除了快捷方式之外,还有其他方法可以从快捷方式获取键
吗SC属于System.Windows.Forms.Shortcut
型
var k = (Keys)sc;
我需要每个键的单独字符串,并且上述内容不起作用,因为我使用的是进度 ABL .NET 桥(不要问)。
我认为sc
应该是一个整数,但显然在 .NET 中这行代码工作正常。
ShortCut 枚举值已经过精心挑选,以便与快捷方式的 Keys 枚举完全匹配。 例如,ShortCut.CtrlShiftF1 0x30070匹配 (Keys.Control |按键移位 |键.F1): 0x20000 |0x10000 |0x00070 = 0x30070。 这不是偶然的。
已提供将 ShortCut 转换为字符串的功能,如果将其 ShowShortcut 属性设置为 True,则 MenuStrip 中的菜单项可以自动显示 MenuItem.Shortcut 的字符串。 您可以在自己的代码中使用相同的技术,使用 KeysConverter 类:
var sc = Shortcut.CtrlShiftF1;
var txt = new KeysConverter().ConvertToString((Keys)sc);
Console.WriteLine(txt);
输出:
按 Ctrl+Shift+F1 .
ABL 中的示例:
USING Progress.Util.TypeHelper FROM ASSEMBLY.
USING System.Enum FROM ASSEMBLY.
USING System.Windows.Forms.Keys FROM ASSEMBLY.
USING System.Windows.Forms.Shortcut FROM ASSEMBLY.
DEFINE VARIABLE ShortCut AS ShortCut NO-UNDO.
DEFINE VARIABLE Keys_ AS Keys NO-UNDO.
ShortCut = System.Windows.Forms.Shortcut:CtrlShiftF1.
Keys_ = CAST(Enum:ToObject(TypeHelper:GetType("System.Windows.Forms.Keys"), ShortCut:value__), Keys).
MESSAGE Keys_
VIEW-AS ALERT-BOX.
我使用 ABL .NET 桥解决了这个问题,方法是将 System.Windows.Forms.Shortcut 的值 GetHashValue() 的结果与 KeyDown 事件处理程序中的 e:KeyData:GetHGashValue() 进行比较。