2010-11-25 31 views
0

好的,我希望用戶能夠在文本框輸入過程中按下回車鍵來啓動一個單擊按鈕。在C#中更新文本字段時按下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 = ""; 
      } 
     } 


    } 

然而,當我按下輸入值保存,然後在MessageBox出現「請輸入一個值」的4倍。我怎樣才能讓這個代碼在按下回車鍵後只發生一次button_click?

有沒有更簡單的方法來做到這一點?

謝謝!

回答

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 
+0

謝謝。最終的代碼在我的答案中提供。 – RHodgett 2010-11-29 15:24:12

-1

我不想讓你感覺不好,但你想在textbox_textChanged方法中做什麼?

你想要做的第一件事是刪除它。它的作用是將button3_Click添加到KeyUp事件中。每次文本更改時都會再次添加,並且會多次調用button3_Click方法。

你得到的可能是「你試圖輸入重複」的消息。這是因爲button3_Click方法被多次調用一次並且具有相同的值(第一次添加該值,並且在以下調用中它會嘗試再次添加相同的值)。

在任何情況下,嘗試添加信息到您的問題,這是非常不清楚(!)並需要一段時間才能理解。

+0

我從textbox_textchanged代碼:http://www.neowin.net/forum/topic/422677-c%23-how-do-i-detect -enter-key-in-a-textbox/ – RHodgett 2010-11-25 17:28:27

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; 
     } 
    } 
1

首先,我知道這是一個很老的帖子,其次,爲什麼你能不能簡單地只使用文本框的KeyUp事件並調用按鈕的Click事件:

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

除非我錯過了很有可能的東西;-)