获取CheckedListBox的已检查项值的逗号分隔值

时间:2014-07-24 07:09:09

标签: c# winforms csv checkedlistbox

我发现此代码使用逗号从CheckedListBox中获取值。但是CheckedListBox对象没有Selected和Value定义。 (只有4个基本的继承:Equals(),GetHashCode(),GetType(),ToString())

Selected and Value properties giving error.

我需要哪个参考或如何更正此错误?

我把那张图片显示给我的错误,这里是代码:

string values = "";
for (int i = 0; i < clSiparisTipi.Items.Count; i++)
{
    if (clSiparisTipi.Items[i].Selected)
    {
        values += clSiparisTipi.Items[i].Value + ",";
    }
}
values = values.TrimEnd(',');

编辑:我也试过这段代码:

StringBuilder items = new StringBuilder();
foreach (var item in checkedListBox1.CheckedItems)
{
    items.Append(item).Append(",");
}

MessageBox.Show(items.ToString().TrimEnd(','));

但是例如当我从列表中选择两个项目时,给我这样的结果:System.Data.DataRowView,System.Data.DataRowView

4 个答案:

答案 0 :(得分:1)

CheckedListBox公开了SelectedItems集合。

http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selecteditems(v=vs.110).aspx

这反过来暴露了一个计数,它的项目可以通过索引访问。

答案 1 :(得分:1)

StringBuilder sb = new StringBuilder();
foreach(var item in clSiparisTipi.SelectedItems){
   sb.Append((String)item.Value)
     .Append(",");
}
// Remove trailing comma
sb.Remove(sb.Length-1,1);
string values = sb.ToString();

这应该可以解决问题。还要注意连接字符串有点贵。尽可能使用StringBuilder会更快。

答案 2 :(得分:1)

我用这段代码解决了我的问题(我想我会提到如何在我的问题中填充项目)

StringBuilder items = new StringBuilder();
foreach (object checkedItem in clSiparisTipi.CheckedItems)
{
    DataRowView dr = (DataRowView)checkedItem;
    items.Append(dr["tanimId"]).Append(",");
}

MessageBox.Show(items.ToString().TrimEnd(','));

答案 3 :(得分:0)

一旦我这样做了..

var items = new StringBuilder();
foreach (Object ss in checkedListBox1.CheckedItems)
items.Append(string.Format("{0},",ss.ToString()));