表单keydown事件中断textBox keypress事件的工作c#

时间:2016-12-23 20:03:20

标签: c#

我有一个表单,我使用的是Form_keyDown Event和KeyPreview = true。

代码如下

private void MainForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.C)
            button2_Click(sender, e);
        if (e.KeyCode == Keys.P)
            button3_Click(sender, e);
        if (e.KeyCode == Keys.B)
            button4_Click(sender, e);
        if (e.KeyCode == Keys.U)
            button5_Click(sender, e);
        if (e.KeyCode == Keys.T)
            button6_Click(sender, e);
        if (e.KeyCode == Keys.W)
            button7_Click(sender, e);
        if (e.KeyCode == Keys.X)
            button8_Click(sender, e);
    }

但是当我按下文本框上的键(即C,P,B,U,T,W和X)时,事件会触发。我需要的是从Form_keyDown事件中跳过TextBox。这可能吗?

功能键已在使用中,用户不喜欢用户alt或ctrl。

是否有任何离开form_keyDown事件和textBox KeyPress的工作方式不同?

1 个答案:

答案 0 :(得分:1)

    private void MainForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (ActiveControl.Name!="textBox20")
        {
            if (e.KeyCode == Keys.C)
                button2_Click(sender, e);
            if (e.KeyCode == Keys.P)
                button3_Click(sender, e);
            if (e.KeyCode == Keys.B)
                button4_Click(sender, e);
            if (e.KeyCode == Keys.U)
                button5_Click(sender, e);
            if (e.KeyCode == Keys.T)
                button6_Click(sender, e);
            if (e.KeyCode == Keys.W)
                button7_Click(sender, e);
            if (e.KeyCode == Keys.X)
                button8_Click(sender, e);
        }
    }