2013-09-27 26 views
3

此程序的目的是運行一系列的picturebox並將它的.image屬性設置爲特定的圖像。我不斷收到錯誤「對象引用未設置爲對象的實例」。來自顯示「DirectCast(Me.Controls(圖片(i)),圖片框).Image = My.Resources.glass_buttonred」....的行顯示奇怪的是,如果我將該代碼移動到for循環之外精細。未將對象引用設置爲對象的實例

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim pic(2) As Object 

    For i = 0 To 2 
     pic(i) = "picturebox" + Convert.ToString(i) 

     DirectCast(Me.Controls(pic(i)), PictureBox).Image = My.Resources.glass_buttonred 
    Next 

    Label1.Text = pic(1) 
End Sub 

這裏是工作代碼。謝謝!希望這將幫助其他人想將字符串轉換爲控制對象

Dim pic(2) As Object 

For i = 0 To 2 
    pic(i) = "picturebox" + Convert.ToString(i + 1) 

    DirectCast(Me.Controls(pic(i)), PictureBox).Image = My.Resources.glass_buttonred 
Next 

Label1.Text = pic(1) 
+0

什麼是精確的,圖片框的實際名稱和你有多少? – Plutonix

+0

名稱只是圖片框和3 .. – user2824324

回答

3

的問題可能是Me.Controls是區分大小寫的。如果您使用的設計來構建這些,你可能需要:

' Note the upper case letters below 
pic(i) = "PictureBox" + (i + 1).ToString() 
DirectCast(Me.Controls(pic(i)), PictureBox).Image ' ... 

設計師,默認情況下,將命名控制「PictureBox1」(第一個),以及「PictureBox2」爲第二位,案件有關。

+0

不是VB.NET設計器,它首字母大寫。 –

+0

謝謝幫助! – user2824324

+0

@HansPassant謝謝 - 忘記了 - 修復了。 –

相關問題