C# 如何在CheckedListBox中检索CheckedItems的文本
我有一个包含动态数据的复选框列表。现在我想从复选框列表中获取所选项目的列表。我正在使用以下代码C# 如何在CheckedListBox中检索CheckedItems的文本,c#,.net,winforms,data-binding,checkedlistbox,C#,.net,Winforms,Data Binding,Checkedlistbox,我有一个包含动态数据的复选框列表。现在我想从复选框列表中获取所选项目的列表。我正在使用以下代码 for (int i = 0; i < chkTblListDb001.Items.Count; i++) { if (chkTblListDb001.GetItemChecked(i)) { FirstTableSelectedColumns += chkTblListDb001.Items[i].ToString() + ","; Me
for (int i = 0; i < chkTblListDb001.Items.Count; i++)
{
if (chkTblListDb001.GetItemChecked(i))
{
FirstTableSelectedColumns += chkTblListDb001.Items[i].ToString() + ",";
MessageBox.Show(FirstTableSelectedColumns);
}
}
这给了我以下的错误:
未找到ListItem
解决方案是((DataRowView)chkTblListDb001.Items[i])[0].ToString()
string FirstTableSelectedColumns=“”;
对于(int i=0;i
感谢@Pikoh获取您可以使用的项目文本
无论项目的类型是什么,如果您使用了DataSource
和displayember
它使用displayember
返回文本,否则它使用ToString
项目方法
以下是您正在查找的示例,以逗号分隔的选中项文本列表:
var texts = this.checkedListBox1.CheckedItems.Cast<object>()
.Select(x => this.checkedListBox1.GetItemText(x));
MessageBox.Show(string.Join(",", texts));
var text=this.checkedListBox1.CheckedItems.Cast()
.Select(x=>this.checkedListBox1.GetItemText(x));
Show(string.Join(“,”,text));
使用CheckedItems方法
StringBuilder sbCheckedItems = new StringBuilder();
foreach (var cbx in chkTblListDb001.CheckedItems)
{
sbCheckedItems.Append(cbx.ToString() + ",");
}
MessageBox.Show(sbCheckedItems.ToString());
尝试以下操作,将此类添加到项目中
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>());
}
}
希望这就是您所追求的。您必须展示如何绑定该列表,但基本上,您需要将
chkTblListDb001.Items[i]
转换为DataRowView
,然后获得要显示的DataRowView
列,类似于((DataRowView)chkTblListDb001.Items[i])[0]。ToString()
Windows窗体没有复选框列表
控件。你是说CheckedListBox
?是的@Reza Aghaei我是说was CheckedListBox.thankx@Pikoh你给的代码对我有用:)不客气……)如果该项不是字符串类型,则该代码不返回任何内容。最稳定的解决方案是使用GetItemText
方法。如果项的类型是对象,则您将收到对象的ToString()
,在本例中,OP的结果是System.Data.DataRowView
,因为他似乎在使用DataTable
作为DataSource
。使用GetItemText
查找文本,并使用string.Join
连接字符串列表中的项目。
StringBuilder sbCheckedItems = new StringBuilder();
foreach (var cbx in chkTblListDb001.CheckedItems)
{
sbCheckedItems.Append(cbx.ToString() + ",");
}
MessageBox.Show(sbCheckedItems.ToString());
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();