好的,我希望用户能够在文本框输入期间按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键时发生一次?
有更简单的方法吗?
谢谢!
答案 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
方法使用相同的值调用一次(第一次添加值,并且在以下调用中它尝试再次添加相同的值)。
在任何情况下,尝试在您的问题中添加信息,这是非常不清楚的(!)并需要一段时间才能理解。