我正在使用 CheckedListBox (System.Windows.Forms.CheckListBox)并运行一些代码,使用 DataSet 填充列表中的项目。我的问题是我似乎无法弄清楚如何设置选定值属性,或找到要设置的正确属性!
这是我成功添加项目的代码:
for (int i = 0; i < projectsDataSet.tblResources.Rows.Count; i++)
{
clbResources.Items.Add(projectsDataSet.tblResources.Rows[i]["Description"].ToString());
}
.Add 方法没有有用的重载,它带有一个值参数,而我似乎无法获得项目的value属性。
我想我需要的底线是CheckedListBox中的项目,使用我的DataSet中的一个字段显示项目(如描述),并使用另一个来存储该项目的值(如主键),所以会很感激建议实现这一点,谢谢!
答案 0 :(得分:2)
首先为列表框项目创建一个类......
public class Thing
{
public string Key { get; set; }
public string Value { get; set; }
public override string ToString()
{
return Key + "--" + Value;
}
}
然后将项目添加到CheckListBox,如下所示:
for (int i = 0; i < projectsDataSet.tblResources.Rows.Count; i++)
{
clbResources.Items.Add(new Thing()
{
Key = projectsDataSet.tblResources.Rows[i]["Key"].ToString(),
Value = projectsDataSet.tblResources.Rows[i]["Description"].ToString()
}, isChecked);
}
答案 1 :(得分:1)
我遇到了同样的问题。幸运的是,你有解决方法。
如果ListBox&amp;中的项目数和项目顺序DataTable相同,然后您可以获得相应的值,如下所示
ListBox.SelectedIndexCollection items = checkedListBox1.SelectedIndices;
for(int i=0;i<items.Count;i++)
string selectedValue = projectsDataSet.tblResources.Rows[items[i]]["ValueColumn"].ToString();