Mehrere Checkboxen Eigenschaft ändern

  • C#

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Schamash.

    Mehrere Checkboxen Eigenschaft ändern

    Hallo,

    Ich habe in einer Form ca. 100 Checkboxen.
    Die Namen lauteb Checkbox1, Checkbox2,....
    Ich würde nun gerne in einer for-schleife die Eigenschaften ändern, z.b. visible.
    Kann mir jemand sagen wie ich das am besten Mach?
    Den ich möchte abhängig von einer variablen ein paar checkboxen unsichtbar machen.
    Für Rückmeldungen vielen Dank.
    Eine neue List of Checkbox erstellen:

    C#-Quellcode

    1. List<CheckBox> mycheckboxlist = new List<CheckBox>();


    Dann alle Checkboxen in die list adden

    C#-Quellcode

    1. foreach (CheckBox cb in this.Controls.OfType<CheckBox>())
    2. {
    3. mycheckboxlist.Add(cb);
    4. }


    Um eine Chekbox anzusprechen einfach den Index aufrufen:

    C#-Quellcode

    1. MessageBox.Show(mycheckboxlist[1].Name);

    Rest müsstest du hinbekommen.
    Hier könnte meine Signatur stehen.

    bastler schrieb:

    z.b. visible.
    Wenn es genau Visible oder Enabled ist, packst Du alle CheckBoxen in ein Panel und gibst dem Panel .Visible = true|false;
    Ansonsten so wie @mox geschrieben hat.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn man 100 Controls vom gleichen Typ hat, ist das meist absolut unnötig. Wofür genau brauchst du 100 Checkboxen in einer Form?

    Btw. Es gibt auch ne Checked ListBox (oder so ähnlich) die erscheint mir übersichtlicher als 100 checkboxen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    bastler schrieb:

    Den ich möchte abhängig von einer variablen ein paar checkboxen unsichtbar machen.

    wird das ne Art Brettspiel? Bevor wir mit irgendwelchen weiteren Lösungsvorschlägen kommen, wäre ne konkrete, detaillierte Beschreibung der Situation sinnvoll, sonst wird das wohl nie so, wie Du das willst oder wir kommen alle nach 20 weiteren Posts zum Schluss: "Achso, hättest Du das gleich geschrieben, dann hätten wir es von Anfang an folgendermaßen gemacht ..."
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Vielen Dank für eure Rückmeldung.
    Die Checkboxen muss ich wie folgt ausrichten: 4 Zeilen mit jeweils 40 Checkboxen.
    Die hohe Anzahl brauch ich, da der Benutzer hier eine Auswahl treffen muss, die für die weitere Funktion der Software benötigt wird. Das Panel komplett ausblenden geht nicht, da ich nur einzelne Checkboxen ein und ausblenden werde. z.b. kann in den 4 Zeilen jeweils nur 30 Checkboxen angezeigt werden anstatt den 40.

    wird das ne Art Brettspiel? Bevor wir mit irgendwelchen weiteren Lösungsvorschlägen kommen, wäre ne konkrete, detaillierte Beschreibung der Situation sinnvoll, sonst wird das wohl nie so, wie Du das willst oder wir kommen alle nach 20 weiteren Posts zum Schluss: "Achso, hättest Du das gleich geschrieben, dann hätten wir es von Anfang an folgendermaßen gemacht ..."


    Es sollen lampen angesteuert werden. Der benutzer gibt eine Anzahl an lampen vor. abhängig von dieser Anzahl sollen die Checkboxen ein oder ausgeblendet werden. anschließend kann der benutzer über die Checkboxen bestimmen, welche lampen angeschaltet werden sollen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „bastler“ ()

    Der arme User, der sich durch so viele Checkboxen durchklicken muss ...

    Und die Zeilen je in eine Groupbox packen und diese dann ausblenden? Oder kann der User wild alles anklicken?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    bastler schrieb:

    Das Panel komplett ausblenden geht nicht, da ich nur einzelne Checkboxen ein und ausblenden werde
    Poste eine vollständige Aufgabenstellung / Problembeschreibung :!:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    mrMo schrieb:

    Der arme User, der sich durch so viele Checkboxen durchklicken muss ...

    Und die Zeilen je in eine Groupbox packen und diese dann ausblenden? Oder kann der User wild alles anklicken?


    die anzahl der Zeilen kann variieren und die Anzahl an lampen pro Zeile. dies ist so gewünscht, da die Checkboxen so angeordnet werden wie die lampen in Wirklichkeit.
    Der user kann z.b. also sagen, dass es nur 2 Zeilen sind mit jeweils 20 lampen, dann möchte ich nur die 2 Zeilen mit 2 Checkboxen einblenden und den rest ausblenden.
    können aber auch 3 Zeilen mit jeweils 25 sein, deshalb ist das in einer groupbox nicht möglich
    Zusammengefasst also: Anzahl Lampen/Checkboxen festlegen -> OK klicken -> Checkboxen anzeigen, die dann ggf. angeklickt (= eingeschaltet) werden können.
    Dann gar keine Checkboxen von vornherein im Designer festlegen, sondern eher dynamisch per Code eine entsprechende Anzahl zur Laufzeit erstellen, deren Click_Ereignis einer Aktionsmethode zuordnen, der Form hinzufügen und ggf. in der von @mox gesagten List-of-CheckBoxes zuordnen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    ok, aber dacht das dynamische erzeugen ist nicht so gut. wie mach ich dies dann am besten?


    CheckBox[] checkBoxPixelRow1 = new CheckBox[30];
    for (int i= 0; i< 20; i++)
    {

    checkBoxPixelRow1 = new CheckBox();
    checkBoxPixelRow1[i].Location = new System.Drawing.Point(50+(i*15), 100);
    this.Controls.Add(checkBoxPixelRow1[i]);

    }

    ich hab diese Schleife versucht, aber es wird mir immer nur eine Checkbox angezeigt



    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „bastler“ ()

    @bastler Die Diskussion, wie Control-Arrays behandelt werden sollen, führt zu nix, wenn Dein Design Grütze ist.

    RodFromGermany schrieb:

    Poste eine vollständige Aufgabenstellung / Problembeschreibung :!:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    bastler schrieb:

    es
    Was :?:
    ====
    Du stellst hier eine Frage und darfst eine Antwort erwarten.
    Um Dir besser helfen zu können, habe ich Dir eine qualifizierte Frage gestellt.
    Falls Dein Problem noch besteht, beantworte sie.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Zusammengefasst also: Anzahl Lampen=Checkboxen festlegen -> OK klicken -> Checkboxen anzeigen, die dann ggf. angeklickt (= eingeschaltet) werden können.
    Jede Checkbox steht für eine Lampe. der Bediener kann dann aussuchen, welche Lampen geschaltet werden können. die anzahl der lampen wird vorher bestimmt, je nachdem muss die gleiche anzahl an Checkboxen angezeigt werden
    1. Ich glaub nicht, dass dieses Zitat von mir als Problembeschreibung für RfG reicht.
    2. Wenn Du n bisken mit der y-Koordinate spielst, indem Du da i auch noch mit einbaust und dann noch die Hintergrundfarbe der CheckBoxen änderst, wirst Du schnell sehen, dass da mehr CheckBoxen sind als Du denkst.
    3. Es wär m.E. ein bisken besser, statt .Controls.Add in jeder Schleife am Ende einfach ein .Controls.AddRange über alle CheckBoxen zu machen.
    4. checkBoxPixelRow1 = new CheckBox(); überleg bitte nochmal, was da steht und wie es richtig heißen muss.
    5. Bitte CodeTags verwenden, damit z.B. sowas hier entsteht

    C#-Quellcode

    1. //Beispielcode

    6.

    bastler schrieb:

    ok, aber dacht das dynamische erzeugen ist nicht so gut.
    Wie kommst Du drauf bzw. was meinst Du damit? Außer, dass Du n bisken mehr an Code schreiben musst, statt es dem Designer zu überlassen, gibt es keinen relevanten Unterschied. Man wird flexibler - was bei einem flexiblen Design wohl auch sinnvoll wäre.
    7. Methodenzuweisung für's Click-Ereignis nicht vergessen!
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @mox

    bastler schrieb:

    die anzahl der Zeilen kann variieren und die Anzahl an lampen pro Zeile. dies ist so gewünscht, da die Checkboxen so angeordnet werden wie die lampen in Wirklichkeit.
    das könnte etwas schwierig werden
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Was du brauchst ist ein variables Raster.
    Das kannst du auch verschiedene Möglichkeiten realisieren.
    Die müssten aber alle dynamisch erzeugt werden, sonst sieht das einfach nix aus.
    Ich würde deine Lampenschaltung wahrscheinlich mit Flatstyle Buttons realisieren die ich passend zur Konfiguration erstelle.
    Die Buttons haben im Gegensatz zu Checkboxen den Vorteil das du die Färbung über die BackColor einfach steuern kannst.
    Außerdem lassen sich Buttons in verschiedenen Größen immer Quadratisch darstellen so das deine Ansicht skalierbar wird.
    Die Button kannst du dann einfach in einer Doppelschleife erstellen lassen.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."