.net CheckedListBox.Items-Winforms中已启用绑定的属性

.net CheckedListBox.Items-Winforms中已启用绑定的属性,.net,winforms,data-binding,.net-3.5,.net,Winforms,Data Binding,.net 3.5,我对winforms编程比较陌生,来自ASP.NET,我正在努力绑定checklistbox.items中的“Enabled”字段 例如,我有一个: class A { public string Name {get;set;} public bool Enabled {get; set;} } 然后我创建一个列表项a并绑定到checkedlistbox List<A> aList = new List<A>( new A{Name="Item1

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

例如,我有一个:

class A
{
    public string Name {get;set;}
    public bool Enabled {get; set;}
}
然后我创建一个列表项a并绑定到checkedlistbox

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

CheckedListBox.DataSource = aList;
CheckedListBox.DisplayMember = "Name";
List aList=新列表(
新建一个{Name=“Item1”,Enabled=true},
新的A{Name=“Item2”,Enabled=false});
CheckedListBox.DataSource=aList;
CheckedListBox.DisplayMember=“Name”;
最后,如何使“Enabled==false”的项目在checkedlistbox中显示为禁用

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

谢谢


John

不能使用WinForms CheckedListBox执行这种丰富的数据绑定

您可以先设置数据源,然后设置DisplayMember和ValueMember属性,但从那时起,您必须使用代码完成其余操作(包括设置启用和选中的属性)

设置基本绑定,如下所示:

checkedListBox.DataSource = aList; 
checkedListBox.DisplayMember = "Name";
checkedListBox.ValueMember = "Name";
从这里开始,您需要迭代数据源,根据需要设置各个项属性

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


这可能会为您提供一个更优雅的解决方案—从代码背后删除代码,尽管根据您的情况可能不值得这么做。

谢谢David。我怀疑这是不可能的,但很有希望我是错的,因为这是在其他技术。我猜最后我会使用另一个控件,比如网格,并显示一个复选框,将其标记为启用或未启用,并可能更改其颜色以增强UI。WinForms中的dataGridView控件很棒,可以满足您的需要。抓取一份dataGridView常见问题解答的副本,这是一份很好的文档,可以帮助您找到实现所需结果的最佳方法。不过,经过思考,我认为您无法绑定dataGridView行的enabled属性。你可以肯定。