2009-11-23 12 views
5

Tengo un CheckBox que, cuando está marcado/desmarcado, alternará la propiedad Enabled de algunos otros controles. Yo tenía mi código buscando algo como esto:Mejor práctica: CheckBox DataBindings vs CheckedChanged evento

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

Pero hoy he empezado a jugar con DataBindings y descubrió que podía hacer esto:

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

Ellos parecen comportarse de la misma, pero sospecho que uno es preferido sobre el otro. O tal vez uno tiene un comportamiento inesperado que me puede hacer tropezar más tarde.

¿Es una forma mejor que la otra?

Respuesta

2

El primero se comprueba en tiempo compilado, así que iría con ese. Supongo que si la propiedad "Activado" en el segundo ejemplo no fuera válida, obtendría un error de tiempo de ejecución.

+0

Además, no podrá "refactorizar" el segundo automáticamente. –

2

Usted debe notar que hay otra diferencia:
con el enlace de datos (método 2), si el objeto implementa INotifyPropertyChanged, y si se cambia el object.Enabled fuera de la capa de interfaz de usuario, el estado checkbox.checked obtendrá cambiado automáticamente.