Namen von Steuerelementen über Array in Schleife auslesen und nutzen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Namen von Steuerelementen über Array in Schleife auslesen und nutzen

    Hallo,

    bin totaler Neuling in C#. Hab mir jetzt Visual C# 2010 Express geholt und installiert und etwas rumprobiert. Jetzt hänge ich an einem Problem, was ich nicht gelöst bekomme.
    Google hilft mir da leider nicht wirklich, weil ich nicht weiß, wie ich suchen soll.

    Ich habe ein Array erstellt mit den Namen von Elementen, deren Visible-Attribut ich ändern möchte.

    Hintergrund:
    Habe ein Fenster, wie ein Eingabeformular drin ist. Dieses Formular wird nach Absenden ausgeblendet und dafür eine Zusammenfassung angezeigt. Dafür will ich die Elemente des Formulars ausblenden mit Visible = false; . Ich will halt nicht jedes einzelne Element definieren müssen, sondern einfach das Array um den Namen des Elements erweitern. Den Rest soll die for-Schleife erledigen.

    Hier mal der Code:

    Quellcode

    1. Object[] delfields = { "boxVorname" , "boxNachname" , "lblVorname" , "lblNachname" };
    2. for(int i = 0; i<delfields.Length;i++)
    3. {
    4. delfields[i].Visible = false;
    5. }


    Der Code funktioniert, aber der Debugger gibt einen Fehler aus, dass Objects kein Visible-Attribut haben.

    Wieso geht es dann, obwohl es angeblich ein Fehler ist und wie kann ich es richtig machen?
  • Logo. Was du da hast ist nichts weiter als ein Array von Strings.

    Speichere deine GUI-Elemente irgendwo in einem assoziativen Array (unter Java werden die als Map bezeichnet), welches den Namen des Elements auf das jeweilige Element abbildet.

    In Java würde es so aussehen:

    Quellcode

    1. String[] delfields = { "boxVorname" , "boxNachname" , "lblVorname" , "lblNachname" };
    2. for(String fieldName : delfields) {
    3. GuiElement blablubb = myGUIElements.get(fieldName);
    4. if (blablubb != null) {
    5. blablubb.setVisible(false);
    6. }
    7. }

    Portierung auf C# überlasse ich mal dir.