独自旅行 发表于 2021-6-8 14:39

【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语句也可以凑合凑合过去。但是总觉得不爽……问题没解决很不爽。

RAMDA 发表于 2021-6-8 16:45

如果都是Alt+字母这样的快捷键的话,可以给按钮的Text属性写成“保存(&S)”这样

chachi 发表于 2021-6-8 17:22

组合键应该是 (Keys.S && Keys.Ctrl)
如果是单纯alt 组合键,如楼上所说

whzfjk 发表于 2021-6-8 17:42

RAMDA 发表于 2021-6-8 17:54

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;
}

白色的风 发表于 2021-6-8 18:25

HotKey.RegisterHotKey 注册热键

独自旅行 发表于 2021-6-9 12:47

RAMDA 发表于 2021-6-8 16:45
如果都是Alt+字母这样的快捷键的话,可以给按钮的Text属性写成“保存(&S)”这样 ...

后面加&S的话我测试过了,直接按S也能生效。无需……ALT键

独自旅行 发表于 2021-6-9 12:48

RAMDA 发表于 2021-6-8 17:54
如果写成switch语句的话,应该是这样吧

这个方法为好像试过?
抽空再试试?
页: [1]
查看完整版本: 【C#学习】如何在控件里添加快捷键?