1

我正在使用CheckedListBox (System.Windows.Forms.CheckListBox) 并运行一些代码以使用DataSet填充列表中的项目。我的问题是我似乎无法弄清楚如何设置Selected Value属性,或者找到要设置的正确属性!

这是我成功添加到项目中的代码:

for (int i = 0; i < projectsDataSet.tblResources.Rows.Count; i++)
{
   clbResources.Items.Add(projectsDataSet.tblResources.Rows[i]["Description"].ToString());
}

接受值参数的.Add方法没有有用的重载,我似乎无法获取项目的值属性。

我想我需要的底线是 CheckedListBox 中的项目,以使用我的 DataSet 中的一个字段(如描述)显示项目并使用另一个字段来存储该项目的值(如主键),因此希望获得实现的建议那个,谢谢!

4

2 回答 2

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);
}
于 2013-09-20T08:42:20.213 回答
1

我有同样的问题。幸运的是,您有解决方法。

如果 ListBox 和 DataTable 中的项目数和项目顺序相同,则可以得到对应的值,如下所示

ListBox.SelectedIndexCollection items = checkedListBox1.SelectedIndices;

            for(int i=0;i<items.Count;i++)
                string selectedValue = projectsDataSet.tblResources.Rows[items[i]]["ValueColumn"].ToString();
于 2013-09-20T08:39:52.970 回答