WinForms(C#)将对象数据绑定到复选框。已选中属性

WinForms(C#)将对象数据绑定到复选框。已选中属性,c#,.net,winforms,forms,C#,.net,Winforms,Forms,我正在编写一个WinForms应用程序,并试图将.NET对象上的布尔属性绑定到复选框的“checked”属性。我正在成功地创建绑定,但是当我将源属性的值从false更改为true(我有一个按钮可以切换它)时,复选框的“checked”属性不会反映该更改 if (chkPreRun.DataBindings["Checked"] == null) { Debug.WriteLine("Adding chkPreRun databinding"); Binding _binding

我正在编写一个WinForms应用程序,并试图将.NET对象上的布尔属性绑定到复选框的“checked”属性。我正在成功地创建绑定,但是当我将源属性的值从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”属性时缺少了什么。

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

您的代码是否有一个
预运行更改的
?它是否在适当的时间被提升


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

Marc,我没有您提到的事件处理程序,也没有实现INotifyPropertyChanged。您的帖子至少为我指明了正确的方向。我可能应该多读一些关于数据绑定的内容。谢谢您的回答。-看起来INotifyPropertyChanged将完全满足我的需要。