还有别的办法从捷径里得到钥匙吗?
sc为System.Windows.Forms.Shortcut型
var k = (Keys)sc;我需要每个键的单独字符串,上面的字符串将无法工作,因为我使用的是一个进度ABL .NET桥(不要问)。
我认为sc应该是一个整数,但显然在.NET中,这一行代码工作得很好。
发布于 2019-06-06 13:13:22
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.发布于 2013-10-07 13:58:18
ShortCut枚举值已经被精心选择,以便与快捷方式的Keys枚举完全匹配。例如,ShortCut.CtrlShiftF1是0x30070,它与以下内容匹配: 0x20000 \ 0x10000 \ 0x00070 = 0x30070 =0x30070。这不是意外。
已经提供了将ShortCut转换为字符串的功能,如果将MenuItem.Shortcut属性设置为True,则MenuStrip中的菜单项可以自动显示MenuItem.Shortcut的字符串。您可以在自己的代码中使用相同的技术,使用KeysConverter类:
var sc = Shortcut.CtrlShiftF1;
var txt = new KeysConverter().ConvertToString((Keys)sc);
Console.WriteLine(txt);输出:
Ctrl+Shift+F1。
发布于 2019-02-23 11:17:38
通过将System.Windows.Forms.GetHashValue()的值GetHashValue()与KeyDown事件处理程序中的e:KeyData:GetHGashValue()的结果进行比较,我已经使用ABL KeyDown桥解决了这个问题。
https://stackoverflow.com/questions/19221807
复制相似问题