2014-12-22 3 views
1

Я пытаюсь добавить тот же обработчик ко всем моим элементам управления в моей форме. Вот мой код:Создайте тот же обработчик для всех элементов управления моей формы?

Sub CreateDelegates() 
    For Each Ctl In Me.Controls 
     AddHandler Ctl.MouseDown, AddressOf MainPictureBox_MouseDown 
    Next 
End Sub 

Проблема заключается в том, что MouseDown не распознается как событие Object. Любая идея о том, как это решить?

Спасибо

+2

У вас есть опция 'Infer On'? Если нет, попробуйте 'Для каждого Ctl как управления в Me.Controls'. – Mark

+0

Я не знаю, но это сработало. Спасибо друг. –

+0

Параметр Infer не решает этого, он передает Object, потому что Controls реализует не общий IEnumerable. Пожалуйста, закройте свой вопрос. –

ответ

2

Попробуй так:

For Each Ctl As Control In Me.Controls 
    AddHandler Ctl.MouseDown, AddressOf MainPictureBox_MouseDown 
Next 

Если все эти элементы управления PictureBox, то это могло бы быть лучше, чтобы фильтровать их:

For Each Ctl As PictureBox In Me.Controls.OfType(Of PictureBox)() 
    AddHandler Ctl.MouseDown, AddressOf MainPictureBox_MouseDown 
Next 
+0

Спасибо за быстрый ответ, это сработало :) –

+0

Нет, они не являются, это всего лишь копия/вставка функции, которую я уже сделал в другом окне, где мне нужен только этот обработчик на PictureBox. –

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