0

好的,我希望用户能够在文本框输入期间按 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 = "";
            }
        }


    }

但是,当我按 Enter 键时,值会保存,然后 MessageBox 出现大约 4 次“请输入值”。如何使此代码使 button_click 仅在按 Enter 时发生一次?

有没有更简单的方法来做到这一点?

谢谢!

4

4 回答 4

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
于 2010-11-28T20:01:59.063 回答
1

首先,我知道这是一篇很老的帖子,其次,为什么你可以简单地使用文本框的 KeyUp 事件并调用 Button 的 Click 事件:

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

除非我错过了一些很有可能的东西;-)

于 2012-08-06T17:10:08.500 回答
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;
        }
    }
于 2010-11-29T15:23:06.913 回答
-1

我不想让你感觉不好,但你想在这个textbox_textChanged方法中做什么?

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

您得到的可能是“您已尝试输入重复”消息。这是因为button3_Click使用相同的值多次调用该方法(第一次添加该值,然后在随后的调用中尝试再次添加相同的值)。

无论如何,请尝试在您的问题中添加信息,这非常不清楚(!)并且需要一段时间才能理解。

于 2010-11-25T17:06:13.260 回答