2016-12-10 3 views
-2
Private Sub frmPegSolitaire_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    For Each pictire As PictureBox In Me.Controls 
     If Not pictire.Tag.Equals("n") Then 
      pictire.Image = Image.FromFile("peg.png") 
     End If 
    Next 
End Sub 

Hier ist mein Code, der nicht funktioniert. Was mache ich falsch?Laden von Bildern mit Code

+2

Bitte klären * "funktioniert nicht" *; gib ein [mcve]. – jonrsharpe

+0

"funktioniert nicht" ist keine sehr gute Problembeschreibung. _Was funktioniert nicht und was passiert gerade, wenn Sie es ausführen? –

+0

Eine nicht behandelte Ausnahme vom Typ 'System.InvalidCastException' ist in Question1.exe aufgetreten. – vkaleri

Antwort

1

Du Schleifen über alle in Me enthaltenen Controls (wahrscheinlich die Form)
In dieser Sammlung gibt es mehr als nur die PictureBox, so dass Sie nur filtern müssen diejenigen erhalten:
(siehe OfType)

Private Sub frmPegSolitaire_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    For Each pictire As PictureBox In Me.Controls.OfType(Of PictureBox) 
     If Not pictire.Tag.Equals("n") Then 
      pictire.Image = Image.FromFile("peg.png") 
     End If 
    Next 
End Sub 
+0

Du warst schneller als ich. :) –

+0

Eine nicht behandelte Ausnahme vom Typ 'System.NullReferenceException' ist in Question1.exe aufgetreten. Weitere Informationen: Objektreferenz wurde nicht auf eine Instanz eines Objekts festgelegt. – vkaleri

+0

@vkaleri Sie haben etwas, dessen Wert "Nichts" irgendwo in Ihrem Code ist; meine Wette wäre, dass einige Bilderboxen "Tag" nicht gesetzt sind (und so 'Nothing' als Wert haben); entweder fügen Sie einen Scheck hinzu oder geben Sie einen Wert für alle – Sehnsucht