WinForms(C#)数据绑定对象到Checkbox.Checked属性

时间:2010-05-16 16:31:58

标签: c# .net winforms forms

我正在编写一个WinForms应用程序,并且正在尝试将.NET对象上的布尔属性绑定到Checkbox的“checked”属性。我成功创建了绑定,但是当我将source属性的值从false更改为true时(我有一个切换它的按钮),复选框的“checked”属性不反映该更改。

if (chkPreRun.DataBindings["Checked"] == null)
{
    Debug.WriteLine("Adding chkPreRun databinding");
    Binding _binding = chkPreRun.DataBindings.Add("Checked", NwmConfig, "PreRun")

    // Added this just to ensure that these were being set properly
    _binding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
    _binding.ControlUpdateMode = ControlUpdateMode.OnPropertyChanged;
}

例如,我能够将text属性成功绑定到TextBox的值。但是,我不确定在绑定到“Checked”属性时我错过了什么。

1 个答案:

答案 0 :(得分:7)

要使其工作,源必须具有被激活的PreRunChanged事件(EventHandler),或者必须实现INotifyPropertyChanged(包括此属性)。或者作为边缘情况,必须有支持通知的自定义 PropertyDescriptor实现(但这种情况非常罕见。

您的代码是否有PreRunChanged?它会在适当的时候被提升吗?

(UI不会轮询更改;它只通过通知事件了解更改)