Fermo restando quanto ti hanno suggerito, se il metodo è sul click prima esegue il metodo e poi si setta il valore del check (true / false).
se il check non ha la spunta:
al click esegue sempre il codice poi il default, quindi succede questo:
la spunta non c'e' >>> click >>> esegue il codice >>> mette la spunta
tu scrivi che se check1.value=true (ma si trova su false) then fai qualcosa...
poi esegue il default >>>check1.Cheched
tu vedi la spunta ma non esegue il codice.
al secondo click:
click>> la spunta è su true e esegue il codice
se check1.value=true (ora si trova su True) then fai qualcosa...
poi esegue il default
check1.Cheched=false
tu non vedi la spunta ma esegue il codice.
il codice lo devi mettere sul metodo change (o non so se si chiama CausesValidation) che si attiva appena cambia da true a false e viceversa, legge se flaggato o no ed esegue di conseguenza