将键与Windows窗体上的按钮关联

6

我需要在C#上编写一个方法,将特定的按键(来自键盘)与特定的按钮关联起来。例如,如果我按下 A,则在表单应用程序上创建的按钮应该显示为正在被按下。

1个回答

8
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.KeyPreview = true;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        System.Windows.Forms.MessageBox.Show("Ctrl-F was Pressed.");
    }
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == (Keys.Control | Keys.F))
        {
            button1.PerformClick();
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }
}

注意:要模拟点击动画,使“Click”事件看起来像这样:
    private void button1_Click(object sender, EventArgs e)
    {
        button1.FlatStyle = FlatStyle.Flat;
        System.Windows.Forms.MessageBox.Show("foo");
        button1.FlatStyle = FlatStyle.Standard;
    }

虽然不是完美的,但它确实有效。


没有消息框(至少有些东西需要打破)动画就无法工作。在处理量较小的情况下,没有任何变化。 - Rémi
我想你需要挂钩keydown和keyup事件。 - Robert Harvey
可能是定时器相关的东西...我不知道,这只是一句话。没有那么重要。 - Rémi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接