Anzeige

 Mehrere Buttons mit Schleife während Laufzeit umbenennen


#1
hallo zusammen
die Frage wird immer wieder gestellt und auch vielerorts beantwortet, ich begreife es aber trotzdem leider nicht.

Ich kann in einer einfachen Form problemlos drei Buttons (Button 1 - Button3) mit einem 4. Button-Click umbenennen.
Code:
For i As Integer = 1 To 3
        Me.Controls.Item("Label" & i).Text = "Mein Text" + Str(i)
Next
Sobald ich mehrere Formen habe, kommt folgende Fehlermeldung und der obige Code funktioniert nicht mehr.
"Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in Handball.exe aufgetreten."
Auch wird beschrieben, irgend etwas mit NEW zu definieren..
Danke für einen Tip oder eine bessere Methode. Unter VB6 war das sooo einfach!
 

Spyke

Capoeirista
Premium-User
#2
Ich vermute mal das es ein Control mit dem angegebenen Namen nicht existiert den du versuchst über
Me.Controls.Item("Label" & i)
abzufragen.

Dadurch kommt null zurück und der weitere Aufruf von .Text verursacht dann diese NullReferenceException
 
#3
sorry, das beispiel war mit labels statt buttons^.

die explizite fehlermeldung lautet:
"NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt"

Ich versuche mit dem button 61 60 buttons umzulabeln:
Code:
Private Sub Button61_Click(sender As Object, e As EventArgs) Handles Button61.Click
        For i As Integer = 1 To 60
            Me.Controls.Item("Button" & i).Text = "Mein Text" + Str(i)
        Next
    End Sub


mit button1.text = "irgendwas" funktionierts,
mit button(i).text funktionierts nicht.

 

Spyke

Capoeirista
Premium-User
#4
Me.Controls.Item("Button" & i)
liefert dir nur null

es könnte jetzt an der groß und klein schreibung liegen, im Code ist es Button bei dir im Erläuterungstext button

ansonsten:

- entweder groß und kleinschreibung.

- es gibt nicht 1 bis 60 Buttons (oder mindestens einer davon fehlt).

- deine Buttons liegen nicht alle im gleichen Container, ich vermute mal Me ist in deinem Beispiel dein Formular
Me.Controls bekommst du nur die Controls die direkt auf dem Formular liegen (diesen als Container/Parent haben).
Liegen deine Buttons auf einem Panel des Formulares musst du Controls des Panels (meinPanel.Controls.Item("Button" & i)) zum Beispiel aufrufen.

Prüf am besten nochmal die Bennenung deiner Buttons und wo diese liegen.
 
#5
Die Grosskleinschreibung stimmt. Die Anzahl Buttons stimmt, es ist auf dem eigenen Formular.
Die Buttons liegen auf einem Tab, TabControl1, könnte das das Problem sein?
Dank übrigens für deine Hilfe!
 

Spyke

Capoeirista
Premium-User
#6
Das wird wohl das problem sein
In diesem fall musst du die ControlCollection der TabPage abfragen auf der deine Buttons liegen.

meineTabPage.Controls.Item("Button" & i).Text = "Mein Text" + Str(i)
 
Anzeige

Neue Beiträge

Anzeige