c# - 如何使用按键来运行方法?

标签 c# button keypress keydown

我的表单有几个按钮,例如“扫描”和“退出”。我在许多程序中看到按键可以使用按钮。很多时候,要按的唯一键在按钮的文本中带有下划线(我不知道如何在这些论坛上使用下划线选项!)。我转到表单并添加了一个按键事件:

private void Form1_KeyPress(object sender, KeyPressEventArgs key)
    {
        switch (key.ToString())
        {
            case "s":
                Run_Scan();
                break;
            case "e":
                Application.Exit();
                break;
            default:                    
                MessageBox.Show("I'll only accept 's' or 'e'.");
                break;
        }
    }

但是在表单上按“s”或“e”没有任何作用。不确定我哪里出错了?

最佳答案

重写 ProcessKeyCommand 将接受来自表单任何位置的输入。但是,您应该添加修饰符,因为例如在文本框中按“s”或“e”也会触发该操作。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {

    switch (keyData)
    {
        case Keys.S:
            Run_Scan();                
            break;
        case Keys.E:
            Application.Exit();
            break;
        default:                    
            MessageBox.Show("I'll only accept 's' or 'e'.");                
            break;

    }        

    return base.ProcessCmdKey(ref msg, keyData);
}

关于c# - 如何使用按键来运行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8733555/

相关文章:

c# - 用 2 个或更多扩展器 WPF 填充父级的剩余空间

c# - 从图像列可能为空的数据库加载图片框图像

java - 从java代码更新按钮(xml)内的图片

jquery - 如何使用键盘、AJAX 和 jQuery 将 div 移动到预定义的路径

c - gtk+ 文本编辑器 vim 类型模式(插入/命令)

c# - 如何将多个 bool 值声明为 false

c# - 如何解析节点名称中包含无效字符的XML?

javascript - 从使用 JavaScript 创建的按钮获取 ID

html - 不同设备底部的按钮组

javascript - 在某些情况下,KeyPress 事件不会在 Edge 上触发 Enter 键?