2017-02-23 55 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

您不能在多行代碼註釋。請儘管告訴我錯誤。 –

相關問題