从列表中动态向checkboxlist添加新项目<&燃气轮机;C#

从列表中动态向checkboxlist添加新项目<&燃气轮机;C#,c#,dynamically-generated,checkedlistbox,C#,Dynamically Generated,Checkedlistbox,我不想添加集合硬编码样式中的项目,我想在按下按钮时从列表中填充它们 首先,我从列表中获取如下数据: private List<User> _users = new List<User>() foreach (User user in _users) { int index = checkedListBoxDepts.Items.Add(user.UserName); upd.checkedListBoxDepts.Items[index] = user;

我不想添加集合硬编码样式中的项目,我想在按下按钮时从列表中填充它们

首先,我从列表中获取如下数据:

private List<User> _users = new List<User>()

foreach (User user in _users) {
    int index = checkedListBoxDepts.Items.Add(user.UserName);
    upd.checkedListBoxDepts.Items[index] = user;
}
private List\u users=new List()
foreach(用户在_用户中){
int index=checkedListBoxDepts.Items.Add(user.UserName);
upd.checkedListBoxDepts.Items[索引]=用户;
}
用于检索选中项:(我将它们放在字符串类型的列表中):

列表名称=新列表();
foreach(checkedListBoxDepts.CheckedItems中的字符串s){
名称。添加(s);
}

由于这一行,您将遇到错误:

upd.checkedListBoxDepts.Items[index] = user;
您正在将用户对象分配给复选框列表的项,然后尝试将它们作为字符串检索

这足以填充:

private List<User> _users = new List<User>()

foreach (User user in _users) {
    checkedListBoxDepts.Items.Add(user.UserName);
}
private List\u users=new List()
foreach(用户在_用户中){
checkedListBoxDepts.Items.Add(user.UserName);
}

您可以在以后以字符串的形式检索选中的项目

看起来不错,您的问题到底是什么?我得到一个索引错误,索引超出范围,在:index或复选框列表没有显示任何内容…@nvoigtSolved。。。用户为空;所以checkedListBox当然是空的..当我使用调试器检查时,checkedListBoxDepts的字段仍然是SelectedIndex=-1…并且仍然是索引错误…@nvoigt为什么要检查SelectedIndex属性?您正在使用CheckedItems属性,如果没有选中的项,则集合为空,并且不会出现异常。我在表单上看不到任何项。。所以他们不能被检查@yclkvnc@Paradigm你确定你使用了正确的CheckedListBox吗?我建议您创建一个新的Windows窗体项目并在那里试用。
private List<User> _users = new List<User>()

foreach (User user in _users) {
    checkedListBoxDepts.Items.Add(user.UserName);
}