从ShortCut获取密钥

还有另一种从快捷方式获取密钥的方法

sc的类型为System.Windows.Forms.Shortcut

 var k = (Keys)sc; 

我需要为每个键分别使用单独的字符串,因为我使用的是Progress ABL .NET桥,所以上面的代码不起作用(请不要问)。

我认为sc应该是一个整数,但显然在.NET中这行代码运行正常。

ShortCut枚举值已经仔细选择,与快捷键的密钥枚举完全匹配。 例如,ShortCut.CtrlShiftF1是0x30070匹配(Keys.Control | Keys.Shift | Keys.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。