【C#学习】如何在控件里添加快捷键?
本帖最后由 独自旅行 于 2021-6-8 15:25 编辑从网络上看了点博文然后试着进行代码改装。不出所料的出了问题。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
<u> case (e.KeyData == (Keys.Alt | Keys.S)):</u>//报错:控件无法从最早用例标签(case(......))脱离开关,无法将类型“bool”隐式转换为“sys.win.form.keys”
e.Handled = true;
OpenSeting.PerformClick();
顺便说下博文的案例代码为:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == (Keys.S | Keys.Alt))//按下alt+s键
{
e.Handled = true;//将Handled设置为true,指示已经处理过KeyPress事件
textBox1.Focus();//将键盘焦点聚焦到textBox1控件上。
}
else if (e.KeyData == (Keys.X | Keys.Alt))//按下alt+x
{
e.Handled = true;
this.showMsg("hello world!");//执行showMsg方法
}
else if (e.KeyData == Keys.Escape)//按下esc键
this.Close(); //关闭窗口
}
虽然说小程序按钮不多,使用多道IF语句也可以凑合凑合过去。但是总觉得不爽……问题没解决很不爽。 如果都是Alt+字母这样的快捷键的话,可以给按钮的Text属性写成“保存(&S)”这样 组合键应该是 (Keys.S && Keys.Ctrl)
如果是单纯alt 组合键,如楼上所说 chachi 发表于 2021-6-8 17:22
组合键应该是 (Keys.S && Keys.Ctrl)
如果是单纯alt 组合键,如楼上所说
如果写成switch语句的话,应该是这样吧
switch (e.KeyData)
{
case (Keys.Alt | Keys.S):
e.Handled = true;
OpenSeting.PerformClick();
break;
} HotKey.RegisterHotKey 注册热键 RAMDA 发表于 2021-6-8 16:45
如果都是Alt+字母这样的快捷键的话,可以给按钮的Text属性写成“保存(&S)”这样 ...
后面加&S的话我测试过了,直接按S也能生效。无需……ALT键 RAMDA 发表于 2021-6-8 17:54
如果写成switch语句的话,应该是这样吧
这个方法为好像试过?
抽空再试试?
页:
[1]