2013-10-16 31 views
0

我在Visual Basic 2010的設計視圖中有一大堆對象,我需要更改一堆屬性,所以當然我嘗試使用數組而不是取50 -60條線用於重複性任務。但是這個對象似乎有一個問題,它似乎只是從中獲取信息。我知道這是一個很糟糕的解釋,但是當你看到它時你可能會理解它。Visual Basic在數組中引用.Net對象

Dim objectsToClear As Array = _ 
    {lblDailyRoundTrip, lblDaysWorked, lblFillBoxes, lblMilesPerGallon, lblMonthlyInsurance, _ 
    lblMonthlyMaintenance, lblMonthlyParking, tbDailyRoundTrip, tbDaysWorked, tbMilesPerGallon, _ 
    tbMonthlyInsurance, tbMonthlyMaintenance, tbMonthlyParking} 

     For i = LBound(objectsToClear) To UBound(objectsToClear) 
     objectsToClear(i).Text = "" 
     objectsToClear(i).Visible = False 
    Next 

回答

0

試試這個:

Dim objectsToClear As Array = { lblDailyRoundTrip, 
           lblDaysWorked, 
           lblFillBoxes, 
           lblMilesPerGallon, 
           lblMonthlyInsurance, 
           lblMonthlyMaintenance, 
           lblMonthlyParking, 
           tbDailyRoundTrip, 
           tbDaysWorked, 
           tbMilesPerGallon, 
           tbMonthlyInsurance, 
           tbMonthlyMaintenance, 
           tbMonthlyParking } 

For Each item In objectsToClear 
    item.Text = String.Empty 
    item.Visible = False 
Next item 

附: - 你真的應該有Option Strict On,並且你應該強有力地鍵入你的陣列。

+0

謝謝,這是一個VB I類剛開始,本書在後面的部分教授了Option Strict On和其他類似的東西。 – user2884618

0

既然你似乎有意改變只.Text.Visible屬性,然後你可以找到名字的控制,就像這樣:

Dim returnValue As Control() 
returnValue = Me.Controls.Find(objectsToClear(i), True) 

注:True參數是是否要搜索所有的孩子,這聽起來像你想要做的。有關更多信息,請參閱Control.ControlCollection.Find Method文檔。

現在你已經有了匹配您指定的名稱,通過集合中的控制環和設置的屬性值,這樣控件的集合:

For Each c As Control In returnValue 
    c.Text = "" 
    c.Visible = False 
Next 
+0

從發佈的代碼中無法判斷,但我認爲'objectsToClear'的元素可能已經成爲控件。 –