在C#中更新文本字段时按Enter键触发单击按钮

时间:2010-11-25 16:56:12

标签: c#-4.0 keyevent

好的,我希望用户能够在文本框输入期间按Enter键启动单击按钮。

我有以下代码:

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
            if (e.KeyValue == 13)
            {
                button3_Click(sender, e);
            }
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

        this.textBox1.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);
    }
    private void button3_Click(object sender, EventArgs e)
    {
        if (textBox1.Text == "")
        {
            MessageBox.Show("Please enter a value.", "No name entered", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        else
        {
            if (listBox1.Items.Contains(textBox1.Text) == true)
            {
                MessageBox.Show("You have tried to enter a duplicate.", "No duplicates allowed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                listBox1.Items.Add(textBox1.Text);
                textBox1.Text = "";
            }
        }


    }

然而,当我按下输入值保存然后消息框出现说“请输入值”约4次。我怎样才能使这个代码按下enter_click只在按Enter键时发生一次?

有更简单的方法吗?

谢谢!

4 个答案:

答案 0 :(得分:4)

//Create a new button
//Assuming you have a new button named "acceptButton"
//Assuming your form name is "FormName"
FormName.AcceptButton = acceptButton;
//this button automatically is triggered at enter key is pressed
acceptButton += new Click(acceptButton_Click);

void acceptButton_Click(object sender, EventArgs e) {
     button3_Click(sender, e);
}

//Make button3 the one to be activated when enter key is pressed
FormName.AcceptButton = button3;
//so that when enter key is pressed, button3 is automatically fired

答案 1 :(得分:1)

首先,我知道这是一篇非常古老的帖子,其次为什么你只需要使用Textbox的KeyUp事件并只调用Button的Click事件:

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyValue == 13)
    {
        this.Accept_Click(null, null);
    }
}

除非我遗漏了很有可能的事情; - )

答案 2 :(得分:0)

吉安是对的,谢谢。最终的代码是:

        private void textBox1_TextChanged(object sender, EventArgs e)
    {
        this.textBox1.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyUp);
    }

    private void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyValue == 13)
        {
            AcceptButton = button3;
        }
    }

答案 3 :(得分:-1)

我不想让你心疼,但是你想用textbox_textChanged方法做些什么?

您要做的第一件事就是删除它。它的作用是将button3_Click添加到KeyUp事件中。每次文本更改时,它都会再次添加,并且button3_Click方法将被多次调用。

你得到的可能是“你试图输入重复的”消息。这是因为button3_Click方法使用相同的值调用一次(第一次添加值,并且在以下调用中它尝试再次添加相同的值)。

在任何情况下,尝试在您的问题中添加信息,这是非常不清楚的(!)并需要一段时间才能理解。