Comment obtenir la propriété IsChecked d’un contrôle WinForm?

Impossible de trouver la réponse à une question apparemment facile. Je dois parcourir les contrôles d’un formulaire. Si un contrôle est une case à cocher et qu’il est coché, certaines actions doivent être effectuées. Quelque chose comme ça

foreach (Control c in this.Controls) { if (c is CheckBox) { if (c.IsChecked == true) // do something } } 

Mais je ne peux pas atteindre la propriété IsChecked.

L’erreur est ‘System.Windows.Forms.Control’ ne contient pas de définition pour ‘IsChecked’ et aucune méthode d’extension ‘IsChecked’ n’accepte un premier argument de type ‘System.Windows.Forms.Control’ (il vous manque une directive d’utilisation ou une référence d’assemblage?)

Comment puis-je atteindre cette propriété? Merci beaucoup d’avance!

MODIFIER

D’accord, pour répondre à toutes les questions – j’ai essayé le casting, ça ne marche pas.

Tu es proche. La propriété que vous recherchez est cochée

 foreach (Control c in this.Controls) { if (c is CheckBox) { if (((CheckBox)c).Checked == true) // do something } } 

Vous devez le lancer pour cocher la case.

 foreach (Control c in this.Controls) { if (c is CheckBox) { if ((c as CheckBox).IsChecked == true) // do something } } 

Vous devez append une dissortingbution de Control à CheckBox:

 foreach (Control c in this.Controls) { if (c is CheckBox) { if ((c as CheckBox).IsChecked == true) // do something } } 

Vous devez lancer le contrôle:

  foreach (Control c in this.Controls) { if (c is CheckBox) { if (((CheckBox)c).IsChecked == true) // do something } } 

La classe Control ne définit pas de propriété IsChecked . Vous devez donc d’abord la convertir dans le type approprié:

 var checkbox = c as CheckBox; if( checkbox != null ) { // 'c' is a CheckBox checkbox.IsChecked = ...; }