我想使用以下snippit。
For Each x As Control In Me.Controls
If TypeOf x Is CustomControl Then
SomeAction( x.CustomEventofCustomControl)
End If
Next
这里的问题是并非所有控件都有事件CustomEventofCustomControl,因此编译器会尖叫。我该如何解决这个问题。
ps:有什么好主意的想法吗?
答案 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