[英]How to retrieve texts for CheckedItems in CheckedListBox
我有一個包含動態數據的CheckBoxList。現在我想從CheckBoxList獲取所選項目的列表。 我正在使用以下代碼。
for (int i = 0; i < chkTblListDb001.Items.Count; i++)
{
if (chkTblListDb001.GetItemChecked(i))
{
FirstTableSelectedColumns += chkTblListDb001.Items[i].ToString() + ",";
MessageBox.Show(FirstTableSelectedColumns);
}
}
但是返回(在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。
要獲取CheckedListBox
項目的文本,您可以使用GetItemText
。
項目的類型無關緊要,如果您使用了DataSource
和DisplayMember
它使用DisplayMember
返回文本,否則它使用項目的ToString
方法。
以下是您要查找的內容的示例,以逗號分隔的已檢查項目文本列表:
var texts = this.checkedListBox1.CheckedItems.Cast<object>()
.Select(x => this.checkedListBox1.GetItemText(x));
MessageBox.Show(string.Join(",", texts));
解決方法是((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);
}
}
感謝@Pikoh
使用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>());
}
}
現在在表單中,使用在此之后建模的代碼(意味着您需要更改控件的名稱以匹配您的控件。
someLabel.Text = checkedListBox1.CheckedItemsJoined();
希望這就是你所追求的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.