为CheckedListBox填充选定的值属性

时间:2013-09-20 08:21:29

标签: c# winforms visual-studio-2010

我正在使用 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中的一个字段显示项目(如描述),并使用另一个来存储该项目的值(如主键),所以会很感激建议实现这一点,谢谢!

2 个答案:

答案 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();