2013-06-05 42 views
0

我在組合框的Validated事件中處理了一些邏輯,但希望在選擇後立即觸發它。我可以單獨處理SelectedIndexChanged事件以啓動事件,但我不知道如何調用它。WinForms組合框上的已驗證火災事件

Private Sub ComboSelectedIndexChanged(sender As System.Object, e As System.EventArgs) _ 
    Handles ComboBox1.SelectedIndexChanged 
    'Fire Validated Event 
End Sub 

Private Sub ComboValidated(sender As System.Object, e As System.EventArgs) _ 
    Handles ComboBox1.Validated 
    'Do Something Here 
End Sub 

我寧願不調入方法直接處理驗證的事件,

ComboValidated(Nothing, Nothing) 

,因爲它不是正是我想要的代碼做,它將運行第二次事實上,經過驗證的事件在失去焦點時實際上會發生。

我可以執行哪些代碼來激發驗證的事件(通過直接觸發事件或通過導致控件失去焦點)?

回答

0

你爲什麼不讓它作爲子..

Private Sub ComboValidated(sender As System.Object, e As System.EventArgs) _ 
    Handles ComboBox1.Validated 

    InCBValidated() 

End Sub 

Sub InCBValidated() 

    'Do Something Here 

End Sub 

所以,你只需要調用InCBValidated()

+0

'ComboValidated()'已經是一個子,一個只是有一個處理程序連接到它內聯。這會做大部分相同的事情,只是用空參數調用方法。我認爲調用'Validate'事件稍微清晰一些,然後讓它觸發並執行任何具有此事件監聽器的操作。 – KyleMit

+0

我真的很喜歡['OnValidated'](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onvalidated.aspx)方法,但這是受保護的,所以我不能直接調用它。 – KyleMit

+0

這只是一個簡單的方法(可能不太好)進入**'在這裏做點什麼** – matzone

0

我通過使控制失去焦點,然後解僱所有neccessary事件解決了這個。控制碰巧在一個組框所以要去除焦點的最簡單的方法是隻給該控件焦點,使頁面上的同一個地方仍然選擇

Private Sub ComboSelectedIndexChanged(sender As System.Object, e As System.EventArgs) _ 
    Handles ComboBox1.SelectedIndexChanged 
    If ComboBox1.Focused Then GroupBox1.Focus() 
End Sub