Bonjour,
Je plussois pour l utilisation de la propriété tag et ta logique d optimisation.
Pas moi, mais bon, je ne met pas de pouce rouge car ça reste valable
.
Le truc, c'est que je n'aime pas l'utilisation du Tag, donc je te propose une autre solution.
Déjà, plutôt que d'utiliser des littéraux, utilise un enum, ça te simplifiera la vie :
1 2 3 4 5 6 7
| public enum Search
{
BL,
POD,
FAC,
PD
} |
Ensuite, c'est de créer un dictionnaire qui met en relation tes enums et tes CheckBox :
private Dictionary<Search, CheckBox> dicoDeCb = new Dictionary<Search, CheckBox>();
Puis, d'une manière simple(*), dans le constructeur de ta fenêtre, de remplir ton dictionnaire :
1 2 3 4
| dicoDeCb.Add(Search.BL, cbBl);
dicoDeCb.Add(Search.POD, cbPod);
dicoDeCb.Add(Search.FAC, cbFac);
dicoDeCb.Add(Search.PD, cbPd); |
Et au final, au moment où tu en besoin :
1 2 3 4 5 6 7 8 9 10
| private void button1_Click(object sender, System.EventArgs e)
{
foreach (KeyValuePair<Search, CheckBox> entry in dicoDeCb)
{
if (entry.Value.Checked)
{
MessageBox.Show(entry.Key.ToString());
}
}
} |
Il ne te reste plus qu'à mettre ton traitement à la place du MessageBox.
Le dernier truc, c'est le CheckBox 'Tous', soit tu commence par le regarder et si il est checked, tu t’abstiens de faire le foreach, soit tu le gère différemment, personnellement, je préférerais un petit bouton (Tous/Aucun) qui coche ou décoche tous les CheckBox, ça t'évite d'avoir une manière de faire différente pour lui.
(*) La méthode un peu plus compliquée serait de créer dynamiquement tes CheckBox en fonction de ton enum et de remplir le dico en même temps mais bon, c'est un autre problème.
Bonne continuation.
Partager