处理各种控件的事件

时间:2011-04-18 15:35:31

标签: vb.net events controls

我想使用以下snippit。

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

这里的问题是并非所有控件都有事件CustomEventofCustomControl,因此编译器会尖叫。我该如何解决这个问题。

ps:有什么好主意的想法吗?

2 个答案:

答案 0 :(得分:1)

一个好主意是使用一些标记界面,比如IHasWhateverEvent(告诉我哪一个,我当然会写出更好的名字!)。该界面没有成员,因为它是一个标记。

您使任何具有该事件的自定义控件实现此空白界面,然后执行此操作:

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

或者如果可以的话,只需在界面中添加一个事件,这样当你向IHasWhateverEvent投射一些控件时,你就可以访问事件了。

答案 1 :(得分:0)

是什么解决了我的问题:

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