【问题标题】:Get comma separated values of checked items values of CheckedListBox获取 CheckedListBox 的选中项值的逗号分隔值
【发布时间】:2014-07-24 07:09:09
【问题描述】:

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

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

我放这张图片是为了显示它在哪里引发错误,这里是代码:

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

【问题讨论】:

  • "Selected" 不存在,好的,必须有一个替代的"Checked"。试试看
  • 我当然查过了。只有 4 个基本继承:Equals()、GetHashCode()、GetType()、ToString()

标签: c# winforms csv checkedlistbox


【解决方案1】:

CheckedListBox 公开了一个 SelectedItems 集合。

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

这反过来会公开一个计数,并且它的项目可以通过索引访问。

【讨论】:

    【解决方案2】:
    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 会更快。

    【讨论】:

    • 我认为您需要在使用 sb.Remove 之前添加对 sb.Length 的检查。
    • 再次没有定义..给出这个错误:'object'不包含'Value'的定义,并且找不到接受'object'类型的第一个参数的扩展方法'Value'(是您缺少 using 指令或程序集引用?)
    【解决方案3】:

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

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

    【讨论】:

    • 你也可以只做string items = string.Join(",", clSiparisTipi.CheckedItems.Cast&lt;DataRowView&gt;().Select(x =&gt; x["tanimId"].ToString()));
    【解决方案4】:

    一旦我这样做了..

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 2017-05-11
      • 2012-08-02
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多