2017-02-23 53 views
1

我有一个循环,它在某些情况下更改了winform上所有标签的颜色。我只是循环遍历所有的控件,然后如果它的标签,更改forecolor。但是,按照业务标准,我必须设置Option Strict On,此时我会收到有关后期绑定“容器”变量的错误。当Option Strict设置为ON时访问循环中的控件

需要

有什么想法时,我只需拨打我的主线程setlabelColors(我)?

Private Sub setlabelColors(ByVal container As Object) 
     For Each control As Object In container.Controls 
      If TypeOf control Is Label Then 
       control.forecolor = ColorTranslator.FromOle(RGB(205, 207, 182)) 
      ElseIf TypeOf control Is Panel Or TypeOf control Is GroupBox Then 
       setlabelColors(control) 
      End If 

     Next 
    End Sub 

回答

1

Object可以是具有任何性质组合的任何可能类型。为了避免后期绑定,只需将其更改为包含控件集合的Control

Private Sub setlabelColors(ByVal container As Control) 

您还需要你的循环更改为:

For Each control As Control In container.Controls 

没有理由让controlObjectcontainer.Controls每一个元素是一个Control

+0

现在这显示了control.forecolor和递归调用istelf –

+0

'code'私人小组setlabelColors(BYVAL容器作为一个ContainerControl) 误差为每个控制在container.Controls 如果TypeOf运算控制是标签然后 control.forecolor = ColorTranslator.FromOle(RGB(205,207,182)) elseif的TypeOf运算控制面板或TypeOf运算控制分组框然后 setlabelColors(控制) 结束如果 接下来 尾子'code' –

+0

您不能在多行代码注释。请尽管告诉我错误。 –

相关问题