Salut
-----
C'est encore plus simple que ce que vous proposez, ça se fait en une ligne :
radioButton1.Checked = !radioButton1.Checked
C'est plus simple, mais je crains que ça ne fonctionne pas mieux, et exactement pour la même raison que le problème d'origine: ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Le fonctionnement même du radiobutton va faire qu'il va d'abord se cocher avant d'appeler l'évènement clic. Du coup, checked sera toujours "true" et "click" invalidera toujours l'action. Le radiobutton ne sera donc jamais coché.
Il n'y a pas moyen d'obtenir le résultat demandé via "click" seul, du moins pas sans le genre d'astuce indiquée par micka132, parce qu'on ne sait pas tester dans "click" l'état du radiobutton avant le dit "click", il sera toujours "true." Il faut utiliser CheckedChanged en combinaison avec click ou tout mécanisme de variable supplémentaire.
Mais je plussoie que pour faire ce genre de chose, ça correspond exactement au fonctionnement d'une checkbox, faite pour ça de façon "naturelle".
Pour le reste, on sent un peu le manque de références sur le C#, parce qu'on n'écrit guère "a = true" on écrit "a" tout simplement. Idem pour "a = false" plutôt que "!a". Ça sent le passage depuis le basic.
idem avec if (a) .... if(!a) plutôt que if(a) else, dans ce cas de figure ou a n'est pas modifié entre le if et le else.
Et, au final, if(a) a = false else a = true, amène la simplification indiquée : a = !a.
A+
Claude
Partager