Entwickler-Ecke
Basistechnologien - Reset Button
derjonny - Do 15.04.10 17:53
Titel: Reset Button
Huhu ich wieder und noch eine frage. :D ihr seid alle immer so nett.
ich habe ien reset button in meinem Programm nun möchte ich aber nicht alle CheckBox in dem Programm rein schreiben.
kann man das mit einem array oder einer schleife realisieren??
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| chBWied1.Checked = false; chBWied2.Checked = false; ... ... ... ... ... ... |
JüTho - Do 15.04.10 18:08
Genauso wie ich es in der anderen Diskussion für die Initialisierungen angegeben hatte. Jürgen
norman2306 - Do 15.04.10 19:11
C#-Quelltext
1: 2: 3: 4: 5:
| foreach(Control item in Controls) { if(item is Checkbox) ((Checkbox)item).value = false; } |
JüTho - Do 15.04.10 19:17
Normans Antwort entspricht dem, was ich Johnny schon gezeigt hatte.
@Norman
Bitte korrigiere deinen Fehler nicht, er soll ihn selbst finden und verbessern!
Gruß Jürgen
norman2306 - Do 15.04.10 19:37
;) hatte es nur schnell hin geklatscht. Ist mir garnicht aufgefallen. Aber das dürfte ja kein Prob sein...
Sorry, wollte dich nicht übermannen.
derjonny - Fr 16.04.10 11:05
hmmm ja problem ist jadas ich noch nicht so viel gemacht habe mit c#.
also ich muss doch irgendwie erstmal die Checkbox namen zuweisen? oder nicht? ich verstehe das nicht ganz. :(
Irgendwie so vieleicht?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Boolean[] item = new Boolean[] {Convert.ToBoolean(chBWied1,chBWied2)};
foreach (Control item in Controls) { if (item is Checkbox) ((Checkbox)item).Checked = false; } |
derjonny - Fr 16.04.10 14:48
Habe jetzt eine neue Lösung.
Könnte das eventuell klappen? Bei mir sagt er "Der Name "chBWied" ist im aktuellen Kontext nicht vorhanden."
Würde mich auf eine schnelle antwort freuen... :D
C#-Quelltext
1: 2: 3: 4:
| for (int i = 1; i <= 10; i++) { chBWied(i).Checked = false; } |
danielf - Fr 16.04.10 15:09
Nimm den Vorschlag von Jürgen und norman2306 an. Dann musst du lediglich ein Form mit CheckBoxen platzieren und es tut was du willst. Alternativ kannst du CheckBoxen auch gruppieren, d.h. du erzeugst CheckBoxen und fügst diese einer Collection (zum Beispiel List) hinzu und interrierst über diese Collection. Dann benötigst du keinen is Abgleich mehr und wenn noch andere TextBoxen auf der Form ist sind diese zu vernachlässigen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| List<CheckBox> checkBoxGroup = new List<CheckBox>();
checkBoxGroup.Add(checkBox1); checkBoxGroup.Add(checkBox2); ...
SetValue(true, checkBoxGroup);
public void SetValue(bool value, List<CheckBox> checkBoxes) { foreach ( var checkBox in checkBoxes) { checkBox.Value = value; } } |
derjonny - Fr 16.04.10 15:33
ich danke euch für die vielen vorschläge. Aber ich kann das von jürgen und normann leider nicht richtig deuten wie gesagt ich bin neueinsteiger.
JüTho - Fr 16.04.10 16:37
Daniels Vorschlag ist u.U. schöner, erfordert aber in der Tat für Anfänger zuviel Wissen.
Zu deiner obigen Frage, was
Controls ist.
Das wäre auch ein Anlass, um selbst in der SDK-Doku/MSDN/Hilfe nachzulesen, wozu gibt es einen Hilfe-Index. Jedes Control - beginnend bei Form - hat eine solche Eigenschaft, in der alle Controls gesammelt werden, die dort eingebettet sind. Im einfachsten Fall sind alle TextBoxen, CheckBoxen usw. direkt auf dem Formular (Form) platziert, dann durchläuft die foreach-Schleife (siehe meinen alten und Normans jetzigen Vorschlag) alle Elemente von this.Controls (und this kann fast immer, auch hier, weggelassen werden).
Wenn die Elemente auf einem Panel sitzen, musst du specialPanel.Controls durchlaufen, und bei einer GroupBox eben specialGroupBox.Controls. (Bitte frag jetzt nicht, was specialPanel ist; jedem Control gibst du doch
deinen Namen.)
In der anderen Diskussion hatte ich bereits einige Voraussetzungen für dieses Verfahren genannt. Welche bei dir erfüllt sind, weiß ich natürlich nicht, denn du hast (zum Glück) nicht das ganze Programm zitiert. Aber die Ratschläge musst du dann anpassen.
derjonny hat folgendes geschrieben : |
Habe jetzt eine neue Lösung.
Könnte das eventuell klappen? Bei mir sagt er "Der Name "chBWied" ist im aktuellen Kontext nicht vorhanden." |
Ich kann auch nicht sehen, dass du chBWied deklariert hast, vor allem nicht als Methode, damit es als chBWied(i) benutzt werden könnte. Oder meinst du chBWied[i]?
Was sollte eigentlich die folgende Konstruktion:
derjonny hat folgendes geschrieben : |
C#-Quelltext 1:
| Boolean[] item = new Boolean[] {Convert.ToBoolean(chBWied1,chBWied2)}; | |
Zwei CheckBoxen zusammenfassen und in einen bool-Wert konvertieren? aus diesem einen bool-Wert ein bool-Array machen? ein Array als item bezeichnen?
Du musst erheblich genauer auf die verwendeten Datentypen achten und nicht alles mischen! Vielleicht solltest du erst einmal Schritt für Schritt genau aufschreiben, was du machen willst.
Gruß Jürgen
derjonny - Fr 16.04.10 16:57
Ich habe es Jetzt so gemacht. Naja gut das hatte ich auch schon raus Bevor mir Daniel das Geschrieben hat. :D trozdem vielen dank.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| List<CheckBox> CB = new List<CheckBox>(); CB.Add(chBWied1); CB.Add(chBWied2); CB.Add(chBWied3); CB.Add(chBWied4); CB.Add(chBWied5); CB.Add(chBWied6); CB.Add(chBWied7); CB.Add(chBWied8); CB.Add(chBWied9); CB.Add(chBWied10); foreach (CheckBox c in CB) { c.Checked = false; } |
Die frage ist ja wie mache ich es wenn ich sage mal bin zu 100 CheckBox habe?
Ich dachte er es geht vieleicht so dass ich eine checkbox angebe und dann Geht er mit der zahl immer einen weiter. Deshalb dache ich es geht mir der for schleife
die ich vorhin geposted habe.
Naja gut im endefekt will cih eigentlich nur das alle Eingaben und einstellungen zurücksetze.
Mir würde noch einfallen es so zu lösen dass "Form" einfach neu zu starten?!
norman2306 - Fr 16.04.10 22:00
was gefällt dir an der Lösung von mimr oben nicht, außer das ein Buchstabe falsch geschrieben ist? Kürzer geht es ja wohl kaum...
derjonny - Sa 17.04.10 09:10
:D nein das meine ich nicht die lösung ist super...:D aber ich dache ich bekomme das auhc so hin das er autromatisch hoch zählt..:D weist wie ich das meine??
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!