2014-11-25 85 views
0

下面是一個組合框keydown事件我如何可以調用keyDown事件通過傳遞參數,的WinForms Vb.net

Private Sub ComboBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyDown 
     If e.KeyCode = Keys.Enter Then 
      TextBox2.Text = ComboBox1.Text 
      TextBox2.Focus() 
     End If 
    End Sub 

我想通過將觸發從combobox_leave同一事件「回車鍵」我一樣遵循但不工作,如何實現這一目標?

Private Sub ComboBox1_Leave(sender As Object, e As EventArgs) Handles ComboBox1.Leave 
    ComboBox1_KeyDown(Me, Keys.Enter) 
End Sub 
+0

@ user17777733嘗試從keydown事件提取過程 – DevEstacion 2014-11-25 07:58:30

+0

只是好奇,爲什麼你要與他們的鍵盤的不規範的行爲懲罰你的用戶?最初的驚喜之後,當他們發現你不允許將焦點設置到另一個控制時,他們會生氣。我的建議:如果你沒有一個真正有效的理由不要亂搞系統鍵盤處理程序和焦點事件 – Steve 2014-11-25 08:05:52

回答

0

爲什麼不直接從實際事件中提取方法?

Private Sub ComboBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyDown 
    performAction(e.KeyCode); 
End Sub 

Private Sub performAction(e as Keys) 
    If e = Keys.Enter Then 
     TextBox2.Text = ComboBox1.Text 
     TextBox2.Focus() 
    End If 
End Sub 

Private Sub ComboBox1_Leave(sender As Object, e As EventArgs) Handles ComboBox1.Leave 
    performAction(Keys.Enter); 
End Sub 
+0

謝謝,你可以刪除半列和添加結束小組,它的VB ... :) – user1777733 2014-11-25 08:05:27

+0

我解決了我的概率,使用單獨的子程序無法實現這個功能? – user1777733 2014-11-25 08:07:28

+0

@ user1777733你可以實現你最初想要的,但這太複雜了,不僅僅是從另一種方法調用它。 – DevEstacion 2014-11-25 08:43:37

0

您也可以使用SendKeys.Send方法

當用戶離開組合框(如在你的例子),

您可以將焦點設置回到組合框

,然後使用SendKeys.Send("{ENTER}")觸發輸入keydown。

多這樣的:

Private Sub ComboBox1_Leave(sender As Object, e As EventArgs) Handles ComboBox1.Leave 

     ComboBox1.Focus() 
     SendKeys.Send("{ENTER}") 
End Sub 

然而,這防止用戶聚焦到另一部件。爲防止出現這種情況,您可以使用if statement,如果用戶在關注組合框後單擊或關注其他組件,用戶仍然可以「離開」組合框。

您的方法不可取,這會導致用戶的誤解。

0

試試這個:

Private Sub ComboBox1_KeyDown(sender As Object, e As 
keyEventArgs) Handles ComboBox1.KeyDown 
    Dim _KeyCode As Short 
    If e Is Nothing Then 
     _KeyCode = 13 
    Else 
     _KeyCode = Keys.Enter 
    End If 

    If _KeyCode = Keys.Enter Then 
     TextBox2.Text = ComboBox1.Text 
     TextBox2.Focus() 
    End If 
End Sub 

Private Sub ComboBox1_Leave(sender As Object, e As EventArgs) 
Handles ComboBox1.Leave 
Dim keypress As System.Windows.Forms.KeyPressEventArgs 
    ComboBox1_KeyDown(sender, keypress) 
End Sub 
相關問題