为什么KeyDown事件不会发生?

时间:2015-04-29 13:10:13

标签: c#

我的初衷是让文本框的输入事件运行btnOK_Click事件,但经过几次尝试我无法实现它,所以我尝试了另一种方式并尝试使用KeyPress获取任何键,但仍然没有'工作,所以我做了这两个简单的代码,但它仍然没有工作;

    private void textBox2_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            //enter key is down
            //btnOK_Click(this, e);
            System.Windows.Forms.MessageBox.Show("My message here");
        }
    }
    private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Return)
        {
            //enter key is down
            //btnOK_Click(this, e);
            System.Windows.Forms.MessageBox.Show(((char)Keys.Return).ToString());
        }
    }

有什么建议吗?我读了一些类似的问题,他们说要将IsInputKey属性设置为true,但我无法在任何地方找到它。我使用Visual Studio 2008

3 个答案:

答案 0 :(得分:0)

在我看来,你正在寻找类似这样的东西

private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)//should be replaced with enter
    {
        button1.PerformClick();
    }
}

注意:上面的代码位于KeyDown而不是KeyPress

假设您正在使用winforms

,此代码应该有效

答案 1 :(得分:0)

两个选项: 1)使用按键事件为

public void txt_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnOK_Click(sender, e); // or btn.PerformClick();
                return;               
            }
        }

2)使BtnOK成为表单的AcceptButton。 (注意:这将适用于表单中的所有文本框)

this.AcceptButton = btnOK;

答案 2 :(得分:0)

使用Escape键而不是返回键:

using System;
using System.Windows.Forms;

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

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnOK_Click(sender, e);
                MessageBox.Show("My message here");
            }
            else if (e.KeyCode == Keys.Escape)
            {
                btnOK_Click(sender, e);
                MessageBox.Show(((char)Keys.Escape).ToString());
            }
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Test");
        }
    }
}

您也可以在KeyDown事件中检查两个键。 你也可以用

btnOK.PerformClick();

而不是

btnOK_Click(sender, e);