如何在 CheckedListBox 中检索 CheckedItems 的文本

How to retrieve texts for CheckedItems in CheckedListBox

我有一个包含动态的 CheckBoxList data.Now 我想从 CheckBoxList 中获取所选项目的列表。我正在使用以下代码。

for (int i = 0; i < chkTblListDb001.Items.Count; i++)
{
    if (chkTblListDb001.GetItemChecked(i))
    {
          FirstTableSelectedColumns += chkTblListDb001.Items[i].ToString() + ",";
          MessageBox.Show(FirstTableSelectedColumns);
    }
}

但是 return(在 FirstTableSelectedColumns 变量中)"System.Data.DataRowView,System.Data.DataRowView,"

当我使用此代码时

string test = "you've selected :";

foreach (ListItem item in theCheckBoxList.Items)
{
    test += item.Selected ? item.Value + ", " : "";
}
labelResult.Text = test;

它给我以下错误

ListItem not found.

Solution is ((DataRowView)chkTblListDb001.Items[i])[0].ToString()

 string FirstTableSelectedColumns = "";
      for (int i = 0; i < chkTblListDb001.Items.Count; i++)
            {
              if (chkTblListDb001.GetItemChecked(i))
                 {
                 //FirstTableSelectedColumns += chkTblListDb001.Items[i].ToString() + ",";
                   FirstTableSelectedColumns += ((DataRowView)chkTblListDb001.Items[i])[0].ToString() + ",";
                   MessageBox.Show(FirstTableSelectedColumns);
                 }
             }

非常感谢@picoh

获取 CheckedListBox you can use GetItemText 中项目的文本。

无论项目的类型是什么,如果您使用了 DataSourceDisplayMember 它使用 DisplayMember 到 return 文本,否则它使用ToString 项目的方法。

这是您要查找的内容的示例,以逗号分隔的选中项目文本列表:

var texts = this.checkedListBox1.CheckedItems.Cast<object>()
                .Select(x => this.checkedListBox1.GetItemText(x));

MessageBox.Show(string.Join(",", texts));

使用 CheckedItems 方法。

       StringBuilder sbCheckedItems = new StringBuilder();

        foreach (var cbx in chkTblListDb001.CheckedItems)
        {
            sbCheckedItems.Append(cbx.ToString() + ",");
        }
        MessageBox.Show(sbCheckedItems.ToString());

尝试以下操作,将此 class 添加到您的项目中

using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
public static class CheckedListBoxExtensions
{
    public static string CheckedItemsJoined(this CheckedListBox sender)
    {
        var Result = from singleItem in sender.Items.OfType<string>().Where(
                         (item, index) =>
                         {
                             return sender.GetItemChecked(index);
                         }
                     )
                     select singleItem;

        return string.Join(",", Result.ToList<string>());
    }
}

现在在表单中,使用以此为模型的代码(这意味着您需要更改控件的名称以匹配您的控件。

someLabel.Text = checkedListBox1.CheckedItemsJoined();

希望这就是您所追求的。