-1

我有这样一段代码:

    private void button1_Click(object sender, EventArgs e) {
        // Do something...
    }

    private void Form1_KeyDown(object sender, KeyEventArgs e) {
        if (e.KeyData == Keys.A) {
            // Call button1_Click.
        }
    }

如何设法调用 Click 事件?我应该写什么而不是

            // Call button1_Click.

谢谢!

4

2 回答 2

2

事件旨在触发而不是调用。因此,您可以Form1_KeyDown通过执行按钮单击来触发事件中的事件。我是说

    private void Form1_KeyDown(object sender, KeyEventArgs e) {
            if (e.KeyData == Keys.A) {
                button1.PerformClick();
            }
    }
于 2013-09-19T21:52:13.143 回答
0

由于按钮单击事件处理程序只是一种方法,您可以这样做:

private void Form1_KeyDown(object sender, KeyEventArgs e) {
    if (e.KeyData == Keys.A) {
        button1_Click(this, e);
    }
}

但是,将逻辑移动到单独的方法中并从两个位置调用它通常是一个更好的主意。通过将其中的逻辑重构button1_Click为它自己的方法,您可以清楚地表明您正在从任一组事件处理程序调用该逻辑。

于 2013-09-19T21:32:18.553 回答