Entwickler-Ecke

WinForms - Status von Checkbox durch Arrayvariable angeben


Gooner - Mi 28.07.10 13:10
Titel: Status von Checkbox durch Arrayvariable angeben
Hallo!

Ich habe folgenden Befehl der natürlich so auch funktioniert:

this.checkBox1.CheckState = CheckState.Checked;

Ich lese den Status, also ob Checked oder Unchecked, aber aus einer Textdatei aus und speichere
mir den Status der verschiedenen Checkboxen in einem array.

D.h. array[0] ist z.B. Unchecked und array[1] ist Checked usw.

Jetzt würde ich gerne den Status von CheckState mit Hilfe meines array Inhalts angeben also:

this.checkBox1.CheckState = CheckState.array[1];

Wenn ich das so probiere, geht es nicht...

Ist das denn generell möglich und wenn ja wie?

LG
Gooner


Ralf Jansen - Mi 28.07.10 13:33

Wenn dein Array als Array von Checkstate (also als Checkstate[] array;) definiert ist sollte das eigentlich funktionieren.


C#-Quelltext
1:
2:
3:
4:
CheckState[] array = new CheckState[10];
array[0] = CheckState.Checked;

checkBox1.CheckState = array[0];


Necaremus - Mi 28.07.10 16:40

warum arbeitest du nicht mit boolean?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
private void CheckIt() {
bool[] checks = LoadCheck(); //bzw List<bool>
List<CheckBox> cbs = LoadList();

for (int i = 0; i < cbs.Count; i++)
 cbs[i].Checked = checks[i];
}
private bool[] LoadCheck() {
 //load here
 return list;
}
private List<CheckBox> LoadList() {
 //same
 return list;
}


danielf - Mi 28.07.10 16:51

Also, das macht doch keinen Sinn :o

Die CheckBox ist ja nur zur Visualisierung eines Status einer Eigenschaft eines Objekts. Du solltest die Darstellungsform (in diesem Fall die CheckBox) mit den Daten (in diesem Fall true / false) trennen. Eventuell hat das Ding das du versuchst mithilfe von true/false zu beschreiben ja noch mehr Eigenschaften.

Speicher dir also einfach diese Objekte und beim Laden setzt du die Werte entsprechend.