显示字符串的C#System.Windows.Forms.Shortcut(例如CtrlX->;Ctrl+;X)
我试图通过OwnerDraw自定义MenuItem,但现在当MenuItem包含快捷键时出现问题。我已经制定了精确的点来放置它们各自的快捷键,但是我不能得到精确的快捷键字符串。我尝试使用以下代码:显示字符串的C#System.Windows.Forms.Shortcut(例如CtrlX->;Ctrl+;X),c#,winforms,menuitem,C#,Winforms,Menuitem,我试图通过OwnerDraw自定义MenuItem,但现在当MenuItem包含快捷键时出现问题。我已经制定了精确的点来放置它们各自的快捷键,但是我不能得到精确的快捷键字符串。我尝试使用以下代码: var keyConverter = new KeysConverter(); var shotcutString = keyConverter.ConvertToString(System.Windows.Forms.Shortcut.CtrlX); 但它显示的结果是“CtrlX”而不是“Ctrl
var keyConverter = new KeysConverter();
var shotcutString = keyConverter.ConvertToString(System.Windows.Forms.Shortcut.CtrlX);
但它显示的结果是“CtrlX”而不是“Ctrl+X”
现在,我想问一下如何将快捷方式(System.Windows.Forms.shortcut)转换为它们的显示字符串值?(示例:CtrlX>“Ctrl+X”)
提前感谢。要使用,您应该向。您还应该检查快捷键shortcut.None
并返回string.Empty
。您可以使用以下方法:
public string ShortcutToText(Shortcut shortcutKeys)
{
if (shortcutKeys == Shortcut.None)
{
return string.Empty;
}
return new KeysConverter().ConvertToString((Keys)shortcutKeys);
}
例如:
MessageBox.Show(ShortcutToText(System.Windows.Forms.Shortcut.CtrlX));
显示
Ctrl+X
看起来像是键转换器。ConvertToString
默认行为是执行简单的Enum.ToString()
转换。尝试使用替换(“Ctrl”、“Ctrl+”)
进一步处理Ctrl
:
var keyConverter = new KeysConverter();
var shotcutString = keyConverter.ConvertToString(System.Windows.Forms.Shortcut.CtrlX)
.Replace("Ctrl", "Ctrl+");
如果需要,您还可以连接“Shift”、“Alt”等,或者创建要检查的项目列表,将其从“项目”替换为“项目+”:
var check=newlist(){“Shift”、“Ctrl”、“Alt”}//根据需要添加此项
foreach(检查中的var s)
shotcutString=shotcutString.Replace(s,s+“+”);
要使用键转换器
您应该将快捷方式
转换为键
。您还应该检查快捷键shortcut.None
并返回string.Empty
。
var check = new List<string>() { "Shift", "Ctrl", "Alt" }; //add this as needed
foreach (var s in check)
shotcutString = shotcutString.Replace(s, s + "+");