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

标签 c# .net winforms forms

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

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;
}

例如,我能够成功地将文本属性绑定(bind)到 TextBox 的值。但是,我不确定在绑定(bind)到“Checked”属性时我遗漏了什么。

最佳答案

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

你的代码有 PreRunChanged 吗?它是否在适当的时候提出?

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

关于c# - WinForms (C#) 数据绑定(bind)对象到 Checkbox.Checked 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844517/

相关文章:

c# - ItemGroup 项目范围,或者 "Why does MSBuild hate me?"

c# - 如何将自定义 UserControl 显示为对话框?

.net - 如果我删除自动添加的supportedRuntime元素会发生什么?

c# - 通过箭头键限制按钮之间键盘焦点的移动

c# - Windows 7 上的 WinForms 背景色

c# - Prism - EventAggregator.GetEvent<>.Subscribe() - 使用泛型和约束

javascript - 如何在jquery中的popup中访问Json返回值

c# - 查询字符串 C# 中的通配符

c# - 关于方法参数类型的多态性

c# - 不要在 "using"语句后处理属性