2013-02-26 3 views
1

Я создал пользовательский элемент управления с некоторыми надписями и рисунками внутри.Поднять пользовательский щелчок при нажатии на элемент управления внутри

Затем я добавил этот элемент управления в форму.

В событиях формы я установил событие UserControl_click, чтобы поднять функцию.

Проблема, с которой я столкнулась, заключается в том, что если я нахожусь на фоне UserControl, где нет метки или изображений, функция будет поднята. Но если я нажимаю на метку или на изображение внутри элемента управления, функция не поднимается.

Я хочу такое же поведение при нажатии элемента управления внутри моего пользовательского элемента управления, чем при нажатии на элемент управления.

+0

вы могли бы объяснить, почему вы хотите щелкать на ярлыке действовать так же, как при нажатии на фон формы? ваше последнее предложение отбросило меня. – Kcvin

ответ

0

Вы должны добавить добавить функцию на каждом контрольном щелкните событие внутри вашего UserControl:

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

+0

Я не знаю, понимаю ли вы вас. Вы имеете в виду элементы управления внутри 'UserControl'? В любом случае, код здесь для неопределенного количества элементов управления внутри UserControl. Если вы хотите обрабатывать события разных пользовательских элементов управления, просто добавьте обработчики с помощью этой функции: «Обработчики UC1.Click, UC2.Click, UC3.Click» и т. Д. Или вручную с помощью метода «AddHandler». – SysDragon

+0

К сожалению, я хотел сказать, что для неизвестного количества пользовательских элементов управления UC1 ... UCn фрагмент кода в событии uc1_load действительно назначает событие для каждого элемента управления внутри пользовательского элемента управления. В любом случае, вы ответили на мой вопрос, я могу это сделать, добавив обработчики динамически с помощью метода AddHandler для каждого типа управления UserControl. Большое спасибо! – jibarz

1

Ваши ярлыки захватывают события щелчка. Подпишитесь на свои события Click и вызовите того же обработчика, который вы вызываете из UserControl_click.

Смежные вопросы