2009-11-23 4 views
5

J'ai un CheckBox qui, coché/décoché, bascule la propriété Enabled de certains autres contrôles. J'ai eu mon code à la recherche quelque chose comme ceci:Meilleure pratique: CheckBox DataBindings vs événement CheckedChanged

checkBox.CheckedChanged += new EventHandler((o, e) => 
{ 
    control1.Enabled = checkBox.Checked; 
    control2.Enabled = checkBox.Checked; 
}); 

Mais aujourd'hui, je commencé à jouer avec DataBindings et découvert que je pouvais faire:

control1.DataBindings.Add("Enabled", checkBox, "Checked"); 
control2.DataBindings.Add("Enabled", checkBox, "Checked"); 

Ils semblent se comporter de la même chose, mais je soupçonne que l'un est préféré sur l'autre. Ou peut-être que quelqu'un a un comportement inattendu qui pourrait me trébucher plus tard.

Est-ce qu'un moyen est meilleur que l'autre?

Répondre

2

La première est vérifiée à l'heure compilée, donc j'irais avec celle-là. Je suppose que si la propriété "Enabled" dans le deuxième exemple n'était pas valide, vous obtiendriez une erreur d'exécution.

+0

De plus, vous ne serez pas en mesure de "refactoriser" automatiquement le second. –

2

Vous remarquerez qu'il ya une autre différence:
avec liaison de données (méthode 2), si l'objet implémente INotifyPropertyChanged, et si le object.Enabled est modifié en dehors de la couche d'interface utilisateur, l'état checkbox.checked va se changer automatiquement.

Questions connexes