1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Mehrere Buttons mit Schleife während Laufzeit umbenennen

Dieses Thema im Forum ".NET Windows Forms" wurde erstellt von peteraellig, 31. Dezember 2016.

  1. peteraellig

    peteraellig Grünschnabel

    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 (vb.net):
    1. For i As Integer = 1 To 3
    2.         Me.Controls.Item("Label" & i).Text = "Mein Text" + Str(i)
    3. 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!
     
  2. Spyke

    Spyke Capoeirista Premium-User

    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. peteraellig

    peteraellig Grünschnabel

    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 (Text):
    1. Private Sub Button61_Click(sender As Object, e As EventArgs) Handles Button61.Click
    2.         For i As Integer = 1 To 60
    3.             Me.Controls.Item("Button" & i).Text = "Mein Text" + Str(i)
    4.         Next
    5.     End Sub
    mit button1.text = "irgendwas" funktionierts,
    mit button(i).text funktionierts nicht.


     
  4. Spyke

    Spyke Capoeirista Premium-User

    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. peteraellig

    peteraellig Grünschnabel

    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!
     
  6. Spyke

    Spyke Capoeirista Premium-User

    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)
     
  7. peteraellig

    peteraellig Grünschnabel

    genauso gehts :)
    Vielen herzlichen Dank
    p.
     
Die Seite wird geladen...