2013-02-26 89 views
1

我創建了一個內部帶有一些標籤和圖片的用戶控件。點擊內部控件時提高用戶控件點擊數

然後,我將此用戶控件添加到表單。

在窗體事件中,我設置了UserControl_click事件來引發一個函數。

我遇到的問題是,如果我點擊UserControl背景,那裏沒有標籤或圖片,則會引發該功能。但是,如果我點擊標籤或控件內的圖片,該功能不會引發。

我想要點擊我的用戶控件內部的控件時點擊控件背景時的相同行爲。

+0

你能解釋一下你爲什麼會想點擊標籤上的行爲與點擊表單背景時的行爲相同?你的最後一句話把我扔了。 – Kcvin 2013-02-26 15:08:11

回答

0

您必須添加增加您的用戶控件內的每個控制點擊事件功能:

Public Event ControlClick(sender As Object, e As EventArgs) 

Private Sub uc1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    For each elem As Control in Me.Controls 
     AddHandler elem.Click, AddressOf RaiseClick 
    Next 
End Sub 

Private Sub RaiseClick(sender As Object, e As EventArgs) 
    RaiseEvent ControlClick(sender, e) 
End Sub 

然後外面正好趕上這兩個事件:

Public Sub UserControl_click(sender As Object, e As EventArgs) _ 
          Handles UserControl1.Click, UserControl1.ControlClick 
    '... 
End Sub 
+0

謝謝@SysDragon,解決了我的問題。事實是,我只有6個用戶控件,然後我可以處理每個事件。如果你有一個未知數的用戶控件來處理他們的事件,你能否澄清一下如何處理這個問題? – jibarz 2013-02-27 09:25:25

+0

我不知道我是否理解你。你的意思是你的'UserControl'中的控件?無論如何,這裏的代碼是UserControl中的控件數量不確定。如果你想處理不同用戶控件的事件,只需在Handlers UC1.Click,UC2.Click,UC3.Click等等處添加處理函數,或者用'AddHandler'方法手動添加。 – SysDragon 2013-02-27 09:31:47

+0

對不起,我想說一個未知數量的用戶控件UC1 ... UCn,uc1_load事件中的代碼段確實爲用戶控件中的每個控件分配事件。無論如何,你回答了我的問題,我可以通過爲每個UserControl控件類型使用AddHandler方法添加處理程序來完成。非常感謝你! – jibarz 2013-02-27 10:07:49

1

您的標籤捕獲點擊事件。訂閱他們的Click事件並調用您從UserControl_click調用的相同處理程序。