更好的实践:CheckBox DataBindings vs CheckedChanged事件

时间:2009-11-23 23:25:05

标签: c# .net winforms data-binding

我有一个CheckBox,当选中/取消选中时,会切换其他一些控件的Enabled属性。我确实让我的代码看起来像这样:

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 个答案:

答案 0 :(得分:2)

第一个是在编译时检查的,所以我会选择那个。我假设如果第二个示例中的“Enabled”属性无效,则会出现运行时错误。

答案 1 :(得分:2)

你应该注意到另一个区别:
使用数据绑定(方法2),如果对象实现了INotifyPropertyChanged,并且如果在UI层之外更改了object.Enabled,则checkbox.checked状态将自动更改。