gpt4 book ai didi

c# - CheckedListBox 检查列表项属性绑定(bind)到类中的字段

转载 作者:太空狗 更新时间:2023-10-29 23:07:31 27 4
gpt4 key购买 nike

我有一个具有两个属性的类,我想将它绑定(bind)到一个 CheckedListBox 项。 WebsiteName 属性将是 DisplayValue,IsChecked 应该是项目的 Checked 状态:

public class ACLASS:
{
public string WebsiteName
{
get;
set;
}

public bool IsChecked
{
get;
set;
}

public ACLASS()
{

}
}

这就是我“尝试”绑定(bind)它的方式:

    ACLASS aclass = new ACLASS();
aclass.WebsiteName = "www.example.com";
BindingList<ACLASS> list = new BindingList<ACLASS>();
list.Add(aclass);

checkedlistbox.DataSource = list;
checkedlistbox.DisplayMember = "WebsiteName";

这一切都很好并且有效,但是我如何将 CheckedListBox 中项目的 Checked 状态与类的 IsChecked 属性绑定(bind)在一起,所以当我检查 CheckedListBox 中的项目时,它也会更改 ACLASS 的 IsChecked 属性实例?我需要这个,所以我可以通过 ACLASS 实例验证项目的选中状态。

最佳答案

CheckedListBox 控件并不真正支持 DataSource,这就是设计人员将它隐藏在 Intellisense 之外的原因。您可以使用它,但列表框的复选标记属性不适用于您的类,即使您将 ValueMember 属性设置为您的 bool 属性也是如此。

不幸的是,这意味着您必须自己设置值:

checkedlistbox.DataSource = list;
checkedlistbox.DisplayMember = "WebsiteName";
for (int i = 0; i < checkedListbox.Items.Count; ++i) {
checkedListbox.SetItemChecked(i, ((ACLASS)checkedListbox.Items[i]).IsChecked);
}

而且您还必须自己跟踪更改:

checkedListBox1.ItemCheck += (sender, e) => {
list[e.Index].IsChecked = (e.NewValue != CheckState.Unchecked);
};

关于c# - CheckedListBox 检查列表项属性绑定(bind)到类中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23959002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com