EDIT:少し遅れてDataTableにバインドされていたことがわかりました。その場合、そのアイデアは同じで、DataRowView
にキャストしてからプロパティを取って、そのクラスで作業したい場合はDataRow
になることができます。
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
MessageBox.Show(row["ID"] + ": " + row["CompanyName"]);
}
あなたは彼らの強く型付けされた同等物にアイテムを投げたり解析する必要がある、または以下に示すDataRowExtensions.Field
methodを使用するようにSystem.Data.DataSetExtensions
名前空間を使用します。
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
コンパイラはSelectedValueでエラーメッセージを生成します。 – IrfanRaza
@ w69rdy: 'CheckedItems'プロパティは' objects'の配列です。 'object'は' SelectedValue'プロパティを持たず、何でもかまいません。 –