2009-11-23 58 views
5

我有一个CheckBox的是,当检查/取消选中将触发一些其他控件的Enabled财产。我也有我的代码看起来像这样:更好的做法:复选框数据绑定VS的CheckedChanged事件

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

但今天我开始DataBindings玩,我发现我可以这样做:

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

他们似乎有同样的表现,但我怀疑一个是优于其他。或者也许有一些意想不到的行为可能会在晚些时候绊倒我。

一种比另一种好吗?

回答

2

第一个在编译时检查,所以我会去那个。我假设如果第二个例子中的“Enabled”属性无效,你会得到一个运行时错误。

+0

此外,您将无法自动“重构”第二个。 – 2009-11-23 23:35:34

2

您应该注意到,还有另一个差别:
与数据结合(方法2),如果该对象实现INotifyPropertyChanged,并且如果object.Enabled在UI层的外侧改变,checkbox.checked状态将得到改变自动。

相关问题