編輯:我意識到有點晚了,它被綁定到一個DataTable。在這種情況下,這個想法是一樣的,如果你想使用這個類,你可以投到DataRowView
然後拿它的屬性得到DataRow
。
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
MessageBox.Show(row["ID"] + ": " + row["CompanyName"]);
}
您將需要轉換或分析的項目,以自己的強類型的等價物,或使用System.Data.DataSetExtensions
命名空間使用DataRowExtensions.Field
method以下證明:
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
int id = row.Field<int>("ID");
string name = row.Field<string>("CompanyName");
MessageBox.Show(id + ": " + name);
}
你需要投項目訪問您的班級的屬性。
foreach (var item in checkedListBox1.CheckedItems)
{
var company = (Company)item;
MessageBox.Show(company.Id + ": " + company.CompanyName);
}
另外,還可以使用OfType
擴展方法來獲得強類型的返回結果,而不在循環中明確鑄造:
foreach (var item in checkedListBox1.CheckedItems.OfType<Company>())
{
MessageBox.Show(item.Id + ": " + item.CompanyName);
}
我的朋友,我想你還沒有徹底解決我的問題。我正在使用CheckedListBox。我不需要任何選擇,而是我想檢查項目。該屬性僅給出所選項目的值。 – IrfanRaza 2011-02-02 14:43:12
編譯器通過SelectedValue生成錯誤消息。 – IrfanRaza 2011-02-02 14:47:03
@ w69rdy:`CheckedItems`屬性是一個`objects`數組。一個`object`沒有`SelectedValue`屬性,它們可以是任何東西。 – 2011-02-02 14:51:55