.net - 从 CheckedListBox.Items 绑定(bind)启用属性 - Winforms

标签 .net winforms data-binding .net-3.5

我对 winforms 编程比较陌生,来自 ASP.NET,我正在努力绑定(bind) checklistbox.items 中的“Enabled”字段等内容。

例如,我有一个:

class A
{
    public string Name {get;set;}
    public bool Enabled {get; set;}
}

然后,我创建一个列表项 A 并绑定(bind)到一个选中列表框。

List<A> aList = new List<A>(
    new A{Name="Item1", Enabled=true}, 
    new A{Name="Item2", Enabled=false} );

CheckedListBox.DataSource = aList;
CheckedListBox.DisplayMember = "Name";

最后,如何使“Enabled==false”的项目在选中列表框中显示为禁用?

当然,我需要对 Checked 属性执行相同的操作,但为了简单起见,我没有将其添加到示例中。

谢谢

约翰

最佳答案

您无法使用 WinForms CheckedListBox 执行这种丰富的数据绑定(bind)。

您可以设置 DataSource,然后设置 DisplayMember 和 ValueMember 属性,但从那里开始,您必须使用代码完成其余操作(包括设置 Enabled 和 Checked 属性)

设置基本绑定(bind)如下所示:

checkedListBox.DataSource = aList; 
checkedListBox.DisplayMember = "Name";
checkedListBox.ValueMember = "Name";

从那里,您将需要迭代数据源,根据需要设置各个项目属性。

您可能能够做的一件事(我没有尝试过,但它应该可以工作)是子类化 CheckedListBox 以及新类中的一些自定义绑定(bind)代码。

这可能会给你一个更优雅的解决方案 - 从后面的代码中删除代码,尽管根据你的情况可能不值得付出努力。

关于.net - 从 CheckedListBox.Items 绑定(bind)启用属性 - Winforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5083799/

相关文章:

c# - 从哪儿开始? .net 应用程序的美学更改(无源代码)

.net - 其他 PC 无法识别的数据库格式

c# - 如何创建双向数据绑定(bind)代理?

html - pre 标签中的 AngularJS 数据绑定(bind)

c# - 如何将 int 数组转换为 int?

c# - TempData 在 RedirectToAction 期间未结转

c# - 检索设备类 GUID 或驱动程序 key

sql - 有没有人将 .NET WinForms 应用程序部署到日本

WPF 数据绑定(bind)和 SQL DataTable 中的数据 - 需要一些想法

c# - 在 ASP.NET MVC 中创建具有多个下拉菜单和文本字段的大型表单