for each c as checkbox in form1

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Hoe kun je een code uitvoeren die voor elke checkbox in een form geldt?
Helaas werkt dit niet...
Code:
For Each c As Checkbox In Form1
    c.Checked = True 'bijvoorbeeld
Next
 
Laatst bewerkt door een moderator:
Probeer dit eens:

Code:
        For Each objControl As Control In Me.Controls
            Try
                DirectCast(objControl, CheckBox).Checked = True
            Catch ex As Exception
                'Type is geen checkbox
            End Try
        Next
 
Probeer dit eens:

Code:
        For Each objControl As Control In Me.Controls
            Try
                DirectCast(objControl, CheckBox).Checked = True
            Catch ex As Exception
                'Type is geen checkbox
            End Try
        Next

Is het ook mogelijk zonder try catch?
 
Denk het niet, je moet alle controls nagaan en kijken welke checkboxes zijn. Als het geen checkbox is, krijg je een error, daarom moet de try-catch er staan (in dit geval).
 
Is het ook mogelijk zonder try catch?

Een try-catch is helemaal niet erg. Het is juist goed om errors te kunnen opvangen, ipv runtime errors in je programma te krijgen. Maar je zou het met een paardemiddel als het volgende kunnen doen.

Code:
        For Each objControl As Control In Me.Controls

            If objControl.ToString.StartsWith("System.Windows.Forms.CheckBox") = True Then
                If DirectCast(objControl, CheckBox).Checked = True Then
                    MsgBox("Een checkbox ge-checked gevonden")
                End If
            End If

        Next
 
Laatst bewerkt:
Een try-catch is helemaal niet erg. Het is juist goed om errors te kunnen opvangen, ipv runtime errors in je programma te krijgen. Maar je zou het met een paardemiddel als het volgende kunnen doen.

Code:
        For Each objControl As Control In Me.Controls

            If objControl.ToString.StartsWith("System.Windows.Forms.CheckBox") = True Then
                If DirectCast(objControl, CheckBox).Checked = True Then
                    MsgBox("Een checkbox ge-checked gevonden")
                End If
            End If

        Next
Bedankt. Het werkt!

Maar over die try-catch: het is inderdaad beter om geen runtime-errors te krijgen, maar ik vind het beter als die niet eens de kans krijgen om te ontstaan. Je kunt elke code tussen try-catch zetten, maar als je kunt voorkomen dat die fout ontstaat heb je deze ook niet nodig...
(klein voorbeeldje van wat ik bedoel: variabele A = een geheel getal tussen de -10 en 10. je kunt gebruiken
Try
Textbox1.Text = 10 / A
Catch ex As Exception
'Een foutmelding (DividedByZeroException?) is ontstaan door te delen door 0
End Try


of je kunt gebruiken
If A <> 0 Then Textbox1.Text = 10 / A

mijn persoonlijke voorkeur gaat dan in dit (misschien iets te simpele) voorbeeldje uit naar de tweede manier... Voorkomen (If ... Then ...) is beter dan genezen (Try ... Catch ...) nietwaar?
 
Ik snap wel waar je heen wilt, maar ik zie zelf een if/then niet als een error-voorkomende statement. Ja, in een klein projectje en als je variabele alleen een integer is bijvoorbeeld. Stel dat je per ongeluk een variabele van het type String, Char of Date zet en door diezelfde code laat runnen. Generics voorkomen dat soort problemen voordat ze ontstaan, en heb je dus helemaal geen if/then statement nodig. En soms kom je helemaal niet onder een try/catch uit. Met het laden van files bijvoorbeeld.
 
Ik snap wel waar je heen wilt, maar ik zie zelf een if/then niet als een error-voorkomende statement. Ja, in een klein projectje en als je variabele alleen een integer is bijvoorbeeld. Stel dat je per ongeluk een variabele van het type String, Char of Date zet en door diezelfde code laat runnen. Generics voorkomen dat soort problemen voordat ze ontstaan, en heb je dus helemaal geen if/then statement nodig. En soms kom je helemaal niet onder een try/catch uit. Met het laden van files bijvoorbeeld.

Klopt.
De enige try catches die ik gebruik zijn bij het
- controleren van internetverbinding (Als er geen internet verbinding is: exception)
- downloaden (als de verbinding wegvalt TIJDENS het downloaden...)
- bij het uitvoeren van een code die niet werkt als de gebruiker beperkte permissies heeft
- bij het laden van een bestand met instellingen
Voor de rest heb ik het altijd voor elkaar gekregen (vaak met hulp van dit forum) om het try-catch-loos te houden... Resulteert er soms wel in dat de code (onnodig?) lang wordt...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan