首先,你要知道你使用了那些控制键,通常是shift,ctrl,alt
然后,对Shortcut.ToString()的结果(假设是CtrlShiftAltABC)进行检测,看包含了上面控制键中的哪几个,并获得他们的位置
第三,根据第二步的判断以及位置的确定,准备好控制键字串到一个得到:"Ctrl+Shift+Alt"
第四,使用Replace方法删除控制键
第五,把字母键进一步分离得到:"Ctrl+Shift+Alt+A+B+C"
代码如下:
string ConvertShortcut(Shortcut)
{
string strShortcut=Shortcut.ToString();
int intCtrl=-1,intShift=-1,intAlt=-1;
string strRtn="";
intCtrl=strShortcut.IndexOf("Ctrl");
intShift=strShortcut.IndexOf("Shift");
intAlt=strShortcut.IndexOf("Alt");
if(intCtrl==0)
{
strRtn="Ctrl";
if(intShift<intAlt)
{
if(intShift!=-1)
strRtn+="+Shift";
strRtn+="+Alt";
}
if(intAlt<intShift)
{
if(intAlt!=-1)
strRtn+="+Alt";
strRtn+="+Shift";
}
}
if(intShift==0)
{
strRtn="Shift";
if(intCtrl<intAlt)
{
if(intCtrl!=-1)
strRtn+="+Ctrl";
strRtn+="+Alt";
}
if(intAlt<intCtrl)
{
if(intAlt!=-1)
strRtn+="+Alt";
strRtn+="+Ctrl";
}
}
if(intAlt==0)
{
strRtn="Alt";
if(intShift<intCtrl)
{
if(intShift!=-1)
strRtn+="+Shift";
strRtn+="+Ctrl";
}
if(intCtrl<intShift)
{
if(intCtrl!=-1)
strRtn+="+Ctrl";
strRtn+="+Shift";
}
}
strShortcut.Replace("Ctrl","");
strShortcut.Replace("Shift","");
strShortcut.Replace("Alt","");
for(int i=0;i<strShortcut.Length;i++)
strRtn+="+"+strShortcut[i];
return strRtn;
}上面的应用可能有点麻烦,另外,string[i]我忘记是字符还是字符串了,如果是字符,则需要进行转换。
然后,对Shortcut.ToString()的结果(假设是CtrlShiftAltABC)进行检测,看包含了上面控制键中的哪几个,并获得他们的位置
第三,根据第二步的判断以及位置的确定,准备好控制键字串到一个得到:"Ctrl+Shift+Alt"
第四,使用Replace方法删除控制键
第五,把字母键进一步分离得到:"Ctrl+Shift+Alt+A+B+C"
代码如下:
string ConvertShortcut(Shortcut)
{
string strShortcut=Shortcut.ToString();
int intCtrl=-1,intShift=-1,intAlt=-1;
string strRtn="";
intCtrl=strShortcut.IndexOf("Ctrl");
intShift=strShortcut.IndexOf("Shift");
intAlt=strShortcut.IndexOf("Alt");
if(intCtrl==0)
{
strRtn="Ctrl";
if(intShift<intAlt)
{
if(intShift!=-1)
strRtn+="+Shift";
strRtn+="+Alt";
}
if(intAlt<intShift)
{
if(intAlt!=-1)
strRtn+="+Alt";
strRtn+="+Shift";
}
}
if(intShift==0)
{
strRtn="Shift";
if(intCtrl<intAlt)
{
if(intCtrl!=-1)
strRtn+="+Ctrl";
strRtn+="+Alt";
}
if(intAlt<intCtrl)
{
if(intAlt!=-1)
strRtn+="+Alt";
strRtn+="+Ctrl";
}
}
if(intAlt==0)
{
strRtn="Alt";
if(intShift<intCtrl)
{
if(intShift!=-1)
strRtn+="+Shift";
strRtn+="+Ctrl";
}
if(intCtrl<intShift)
{
if(intCtrl!=-1)
strRtn+="+Ctrl";
strRtn+="+Shift";
}
}
strShortcut.Replace("Ctrl","");
strShortcut.Replace("Shift","");
strShortcut.Replace("Alt","");
for(int i=0;i<strShortcut.Length;i++)
strRtn+="+"+strShortcut[i];
return strRtn;
}上面的应用可能有点麻烦,另外,string[i]我忘记是字符还是字符串了,如果是字符,则需要进行转换。
{
string shortcut,ret = "";
shortcut = item.Shortcut.ToString();
if(shortcut.IndexOf("Alt")>=0)
{
ret = "Alt+" + shortcut.Substring(3);
}
else if(shortcut.IndexOf("CtrlShift")>=0)
{
ret = "Ctrl+Shift+" + shortcut.Substring(9);
}
else if(shortcut.IndexOf("Ctrl")>=0)
{
ret = "Ctrl+" + shortcut.Substring(4);
}
else if(shortcut.IndexOf("Shift")>=0)
{
ret = "Shift+" + shortcut.Substring(5);
}
return ret;
}呵呵,没有triout兄考虑的周到,但是一般的菜单,我这里足够用了。