2009-11-23 11 views
5

Ho uno CheckBox che, se selezionato/deselezionato, attiva la proprietà Enabled di alcuni altri controlli. Ho avuto il mio qualcosa di codice simile a questo:Migliore pratica: CheckBox DataBindings vs CheckedChanged evento

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

Ma oggi ho iniziato a giocare con DataBindings e ha scoperto che potevo fare questo:

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

sembrano comportarsi allo stesso, ma ho il sospetto si è preferito rispetto all'altro. O forse uno ha un comportamento inaspettato che potrebbe farmi inciampare più tardi.

È un modo migliore rispetto all'altro?

risposta

2

Il primo viene controllato al momento della compilazione, quindi andrei con quello. Suppongo che se la proprietà "Enabled" nel secondo esempio non fosse valida si otterrebbe un errore di runtime.

+0

Inoltre, non sarà possibile "refactoring" automaticamente il secondo. –

2

Si dovrebbe notare che c'è un'altra differenza:
con l'associazione di dati (metodo 2), se l'oggetto implementa INotifyPropertyChanged, e se l'object.Enabled viene modificato al di fuori dello strato di interfaccia utente, lo stato checkbox.checked avranno cambiato automaticamente.

Problemi correlati