Alle Elemente eines bestimmten Typs in Groupbox per Schleife durchlaufen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Alle Elemente eines bestimmten Typs in Groupbox per Schleife durchlaufen

    Hallo,

    ich möchte in einer Groupbox über eine For Each Schleife alle Radiobuttons durchgehen. In der Groupbox befinden sich nicht nur Radiobuttons, es sollen jedoch nur diese durchlaufen werden.

    Ich habes es mit folgendem Code probiert:


    VB.NET-Quellcode

    1. For Each rdb As RadioButton In Groupbox1.Content
    2. Messagebox.Show(rdb.Content)
    3. Next


    Fehlermeldung:
    System.InvalidCastException:
    "Das Objekt des Typs "System.Windows.Controls.StackPanel" kann nicht in
    Typ "System.Collections.IEnumerable" umgewandelt werden."

    Der Fehler liegt in der ersten Zeile des Codes.

    Wo liegt mein Fehler?
    @ErfinderDesRades Danke dir! Hätte ich auch selber drauf kommen können...

    Ich habe die Childobjekte des Stackpanels jetzt wie folgt angesprochen (und es funktioniert):

    VB.NET-Quellcode

    1. For Each x In Stackpanel1.Children
    2. If TypeOf x Is CheckBox Then
    3. Messagebox.Show(x.Content)
    4. End If
    5. Next


    Die MessageBox gibt den Inhalt der Checkbox aus.

    Fred schrieb:

    Die MessageBox gibt den Inhalt der Checkbox aus.
    Das war nicht meine Frage.
    Meine Frage war:

    ErfinderDesRades schrieb:

    Welchen Datentyp hat RadioButton.Content?
    Und meine Befürchtung dahinter ist, dass du diese Frage nicht beantworten kannst, weil dir garnet klar ist, was ein Datentyp eiglich ist.
    Daran leiden viele vb.net-Programmierer, das hängt zusammen mit den Voreinstellungen, mit denen VisualStudio leider ausgeliefert wird.
    Diese Voreinstellungen bewirken massenhaft riskante automatische Typumwandlungen mit dem Ergebnis, dass der Programmierer Datentypen so gut wie nie wahrnimmt, und somit auch nichtmal das Konzept "Datentyp" kennt oder gar versteht.
    Und das Konzept "Datentyp" ist fundamental in einer streng typisierten Programmiersprache.
    Wie dem auch sei - du kannst deine Skills, und dann auch dein Programm signifikant verbessern, wenn du die genannten verheerenden Voreinstellungen korrigierst, und somit dein VB.net überhaupt zu einer ernstzunehmenden objektorientierten Programmiersprache machst: Visual Studio - Empfohlene Einstellungen