2013-02-23 174 views
0

在我的WinForms應用程序的Visual Studio 2010,KEYUP事件觸發自動

我有一個按鈕,和兩個組合框(combobox1combobox2)。

我在按鈕中添加了代碼以清除先前輸入的數據,並將焦點設置在第一個組合框(combobox1)中。

在第一個組合框的鍵盤事件(combobox1)中,我檢查了輸入鍵,如果按下,焦點將移動到下一個組合框(combobox2)。

但我的問題是,當我按下按鈕(按下焦點時按下enter鍵),焦點直接移動到最後(第二)組合框(combobox2)。

combobox1的

KeyUp事件被自動解僱,雖然我有按鈕只有

我怎麼能解決這個進入?

我的代碼是在下面

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    'code to perform database action 
    Me.ComboBox1.Focus() 
End Sub 

Private Sub ComboBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyUp 
    If e.KeyCode = Keys.Enter Then 
     If Me.ComboBox1.SelectedText = String.Empty Then 
      ComboBox2.Focus() 
     End If 
    End If 
End Sub 

更新

當我點擊鏈接,問題不會出現 但是,當我按下回車鍵時重點是按鈕,火按鈕點擊事件發生問題。

回答

2

解決此問題的最簡單方法是將ComboBox1更改爲KeyDown處理程序,而不是鍵。

它發生的原因是事件的順序:

  • 鍵按下的鍵(Enter鍵)
  • 代碼運行(Button2_Click),焦點移到ComboBox1在ComboBox1火災
  • 關鍵最多
  • 代碼運行(ComboFox1_KeyUp),焦點移到ComboBox2

編輯: 更羅嗦的解釋:您按下回車鍵button1,這導致它的OnKeyDown處理程序運行。當你釋放回車鍵時,重點在Combobox1,所以它的OnKeyUp處理程序運行。

+0

謝謝,它的工作。但你能詳細解釋爲什麼問題發生了嗎? – 2013-02-24 05:22:26

+0

@HemalRathod:我以爲我有,但我爲你增加了一個更羅嗦的解釋。 – Pondidum 2013-02-24 12:07:47

相關問題