Variablen in Objektnamen verwenden

Macewind

Grünschnabel
Hallo ich bin neu hier im Forum und habe gleich mal eine Frage:

Problem:
Ich arbeite mit Microsoft Visual Studio 2005 und will den Inhalt von Checkboxen abfragen leider gibt es davon einige und ich habe mich gefragt ob es möglich ist das ganze mit einer Variable zu versehen und in eine Schleife zu packen:

Mein Code:

Code:
zlesen(key)(25) = CInt(Form1.S_25.Checked)
zlesen(key)(25) = zlesen(key)(25).Replace("-", "")

zlesen(key)(26) = CInt(Form1.S_26.Checked)
zlesen(key)(26) = zlesen(key)(26).Replace("-", "")

zlesen(key)(27) = CInt(Form1.S_27.Checked)
zlesen(key)(27) = zlesen(key)(27).Replace("-", "")

zlesen(key)(28) = CInt(Form1.S_28.Checked)
zlesen(key)(28) = zlesen(key)(28).Replace("-", "")

usw.

Also zb.: bei Form1.S_25.Checked nicht eine 25 sondern ein Form1.S_[i].Checked.

Sowas in der Art:
Code:
for i = 25 to 56
zlesen(key)(i) = CInt(Form1.S_[i].Checked)
zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
next

Danke schon mal für die Hilfe.

Macewind
 
Du meinst so hier:

Code:
for i = 25 to 56
zlesen(key)(i) = CInt(Form1.Controls.Item("S_"+cstr(i)).Checked)
zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
next

Leider geht das bei mir nicht Fehler:

"Checked ist kein Member von System.Windows.Control"
 
Aber System.Windows.Forms.CheckBox ist von Control abgeleitet, d.h. du musst das Item vorher in eine CheckBox konvertieren
 
Keine Garantie über die genaue syntaktische Schreibweise, ich bin C# Programmierer. Die Logik dahinter ist auf jeden Fall richtig.

Visual Basic:
for i = 25 to 56
   zlesen(key)(i) = CInt(
      (System.Windows.Form.CheckBox)(Form1.Controls.Item("S_"+cstr(i))).Checked
   )
   zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
next
 
Um den Code von Steiner_B zu berichtigen:

Code:
For i = 25 to 56
   zlesen(key)(i) = CInt(CType(Form1.Controls.Item("S_" & CStr(i)), System.Windows.Forms.CheckBox).Checked)
   zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
Next
 
Zuletzt bearbeitet:
Um den Code von Steiner_B zu berichtigen:

Code:
For i = 25 to 56
   zlesen(key)(i) = CInt(CType(Form1.Controls.Item("S_" & CStr(i)), System.Windows.Forms.CheckBox).Checked)
   zlesen(key)(i) = zlesen(key)(i).Replace("-", "")
Next

bekomme dabei folgende Fehlermeldung:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

in der Zeile:

Code:
zlesen(key)(i) = CInt(CType(Form1.Controls.Item("S_" & CStr(i)), System.Windows.Forms.CheckBox).Checked)

Weil selbst wenn ich testweise gar keine Variable übergebe also:

Code:
For i = 25 to 56
   zlesen(1)(25) = CInt(CType(Form1.Controls.Item("S_25"), System.Windows.Forms.CheckBox).Checked)
   zlesen(1)(25) = zlesen(1)(25).Replace("-", "")
Next

kommt der gleiche Fehler wieder.

Oder muss ich dabei noch was anderes beachten/umwandeln?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück