我对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";
最后,如何使用“Enabled == false”创建项目以在checkedlistbox中显示为已禁用?
当然,我需要对Checked属性执行相同操作,但为了简单起见,我不会将其添加到示例中。
谢谢,
约翰
答案 0 :(得分:1)
您无法使用WinForms CheckedListBox执行此类丰富的数据绑定。
您可以设置DataSource,然后设置DisplayMember和ValueMember属性,但是从那里开始,您必须使用代码完成剩下的工作(包括设置Enabled和Checked属性)
设置基本绑定,如下所示:
checkedListBox.DataSource = aList;
checkedListBox.DisplayMember = "Name";
checkedListBox.ValueMember = "Name";
从那里你需要迭代数据源,根据需要设置单个项属性。
你可以做的一件事(我没试过但它应该工作)是CheckedListBox的子类,但是新类中有一些自定义绑定代码。
这可能会给你一个更优雅的解决方案 - 从后面的代码中删除代码,虽然根据你的情况可能不值得努力。