Schleife für mehrere checkboxen erstellen?

theone101

Mitglied
Hallo. Ich hoffe ihr könnt mir da ein bissle weiterhelfen.

Ich habe 50 Ceckboxen ich weiß des ist viel ich brauche die aber alle. Nun möchte ich aber ne abfrage rein machen sprich so:
Code:
If Combobox1.Checked = False Then
            Pfad1.ReadOnly = True
            Time1.ReadOnly = True
        Else
            Pfad1.ReadOnly = False
            Time1.ReadOnly = False
        End If
Pfad1 und Time1 sind Textboxen auch 50 Stück. Ich möchte nun aber nicht 50mal die abfragen hinschreiben. Gibt es da keine möglichkeit, etwa das so zu gestallten:

Code:
For t As Integer = 1 To 50
If Combobox [t].Checked = False Then
            Pfad [t].ReadOnly = True
            Time [t].ReadOnly = True
        Else
            Pfad [t].ReadOnly = False
            Time [t].ReadOnly = False
        End If
So etwa auf die weise ich kenne mich nicht so gut mit VB 2005 aus.

Gruß
Thomas
 
Hallo, probier es mal so auf die art.....

Ich habe alle CheckBoxen durchlaufen die auf Form1 vorhanden sind und danach die Eigenschaften ReadOnly von jedem einzeln Box ausgelesen und sofort neu gesetzt.
Müsste auch bei dir gehen...

PHP:
  foreach (Control cc in this.Controls)
            {
                if (cc is CheckBox)
                {
                   string chk_Name = "";
                   CheckBox CH = new CheckBox();
                    CH = (CheckBox)cc;
                    chk_Name = cc.Name;                                    
                    // Den Name habe ich dir zum verständinss mit rein damit du siehst wie es arbeitet
                   MessageBox.Show(chk_Name);
                   if (CH.Readonly == true)  CH.Readonly = false;
                 }
             }

Hoffe das hilfe dir.
P.S Ich weis nicht ob der Code Syntaktisch richtig ist, hab es schnell aus dem Kopfgeschrieben, muss bestimmt noch a bissl anpassen. Aber du siehst das Prinzip...

Dave
 
Zuletzt bearbeitet:
Es gibt eine CheckedListBox, vielleicht wäre die besser geeignet.
Oder noch besser über DataGridView.
 
Erstmal Danke für die schnellen Antworten.

Nun es geht mir weniger um die Checkboxen.
Also in meiner Form habe ich 50 Textboxen, 50 MaskedTextboxen und 50 Checkboxen.
Ich möchte das der Benutzer jeweils einzeln auswählen kann welche er will.
Sprich Anfangs sind alle checkboxen deaktiviert und somit auch die Textboxen und die maskedtextboxen wenn z.b. checkbox1 aktiviert wird werden die textboxen auf readonly = false gesetzt und dann kann der benutzer auch was hineinschreiben. Dies kann er jetzt bei allen 50 machen wenn er will oder nur bei der ersten und letzten box usw.

Mir geht es also darum wie ich die Abfrage in eine schleife pake, so das ich diese nicht 50 mal für jede einzelne checkbox extra schreiben muss.

Gruß

Thomas
 
Mach dir ein eigenes Usercontrol, dass eben aus deinen 3 Feldern besteht und die gewünschte Funktionalität besitzt. Zudem sollte das UserControl zwei Eigenschaften anbieten. Eine um abzufragen ob sie "aktiviert" ist und eine zweite zum Abfragen der eingegebenen Werte (wenn mehrere Werte, dann mehrere Eigenschaften dafür).

Dann kannst du schlussendlich alle deine Controls durchlaufen, abfragen ob sie aktiv sind und wenn die Werte auslesen und weiterverarbeiten.
 
Hallo also ich ahb das Problem jetzt so gelöst:
Code:
Dim Pfad_array() As TextBox = {Pfad1, Pfad2, Pfad3, Pfad4, Pfad5, Pfad6, Pfad7,...}
Dim Pfadact_array() As CheckBox = {Pfadact1, Pfadact2, Pfadact3, Pfadact4,...}

Private Sub All_CheckedChanged(...)

If All.Checked = True Then

            'Schleife zum überprüfen aller 50 Boxen 
            For int_Pfad As Integer = 0 To 49

               
                Dim Pfad() As TextBox = Pfad_array

                Dim Pfadact() As CheckBox = Pfadact_array

                Pfad(int_Pfad) = New TextBox
                Pfadact(int_Pfad) = New CheckBox
                
                If Pfad(int_Pfad).Visible Then

                    Pfadact(int_Pfad).Checked = True

                End If

            Next

        Else

            'Schleife zum auschalten aller checkboxen
            For int_pfadact As Integer = 0 To 50

                Dim Pfadact() As CheckBox = Pfadact_array
                Pfadact(int_pfadact) = New CheckBox
                Pfadact(int_pfadact).Checked = False
            Next

        End If

Wenn ich das allerdings mit globalen Arrays mache funkt des net weis vielleicht jemand wieso. Sprich wenn ich die Arrays in der Schleife inizialisiere gehts aber ich möchte ja nicht immer diesen unmengen Code reinkopieren währe zwar jetzt nicht so schlimm aber ich möchte das natürlich gut machen.

Hoffe jemand kann mir helfen mit dem Problem.

Gruß Thomas
 
Zurück