2013-02-26 92 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调用的相同处理程序。