Работа с событиями различных элементов управления - PullRequest
0 голосов
/ 18 апреля 2011

Я хочу использовать следующий фрагмент:

    For Each x As Control In Me.Controls
        If TypeOf x Is CustomControl Then
            SomeAction( x.CustomEventofCustomControl)
        End If
    Next

Проблема здесь в том, что не все элементы управления имеют событие CustomEventofCustomControl, поэтому комплимент визжит.Как мне обойти это.

ps: есть идеи для лучшего названия?

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Хорошей идеей было бы использовать некоторый интерфейс маркера, такой как IHasWhwhatEvent (скажите мне, какой из них, и я составлю лучшее имя, конечно!).Этот интерфейс не имеет членов, так как он является маркерным.

Вы делаете любой из своих пользовательских элементов управления, имеющих это событие, реализующий этот пустой интерфейс, затем вы делаете это:

For Each x As Control In Me.Controls
        If x Is IHasWhateverEvent Then
            SomeAction(((IHasWhateverEvent)x).CustomEventofCustomControl)
        End If
Next

Или, если выможете просто добавить событие в свой интерфейс, чтобы при передаче элемента управления IHasWhwhatEvent у вас был доступ к самому событию.

0 голосов
/ 19 апреля 2011

Что решило проблему для меня:

 For Each x As Control In Me.Controls
        If TypeOf x Is CustomControl Then
            SomeAction( CType(x, CustomControl).CustomEventofCustomControl)
        End If
    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...