如何在 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
中项目的文本。
无论项目的类型是什么,如果您使用了 DataSource
和 DisplayMember
它使用 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();
希望这就是您所追求的。
我有一个包含动态的 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
中项目的文本。
无论项目的类型是什么,如果您使用了 DataSource
和 DisplayMember
它使用 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();
希望这就是您所追求的。