EDIT: Tôi nhận ra hơi muộn rằng nó đã bị ràng buộc vào một DataTable. Trong trường hợp đó, ý tưởng là như nhau và bạn có thể truyền tới một số DataRowView
sau đó lấy thuộc tính để nhận số DataRow
nếu bạn muốn làm việc với lớp đó.
foreach (var item in checkedListBox1.CheckedItems)
{
var row = (item as DataRowView).Row;
MessageBox.Show(row["ID"] + ": " + row["CompanyName"]);
}
Bạn sẽ cần phải cast hoặc phân tích các mục tương đương gõ mạnh của họ, hoặc sử dụng không gian tên System.Data.DataSetExtensions
sử dụng DataRowExtensions.Field
method chứng minh dưới đây:
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);
}
Bạn cần phải cast mục để truy cập các thuộc tính của lớp học của bạn.
foreach (var item in checkedListBox1.CheckedItems)
{
var company = (Company)item;
MessageBox.Show(company.Id + ": " + company.CompanyName);
}
Cách khác, bạn có thể sử dụng phương pháp OfType
mở rộng để có được mạnh mẽ gõ kết quả trở lại mà không cần đúc một cách rõ ràng trong vòng lặp:
foreach (var item in checkedListBox1.CheckedItems.OfType<Company>())
{
MessageBox.Show(item.Id + ": " + item.CompanyName);
}
Nguồn
2011-02-02 14:44:16
Bạn tôi, tôi nghĩ rằng bạn đã không đi sâu với câu hỏi của tôi. Tôi đang sử dụng CheckedListBox. Tôi không cần bất kỳ lựa chọn, thay vào đó tôi muốn kiểm tra các mặt hàng. Thuộc tính chỉ cung cấp giá trị của mục đã chọn. – IrfanRaza
Trình biên dịch tạo ra thông báo lỗi trên SelectedValue. – IrfanRaza
@ w69rdy: Thuộc tính 'CheckedItems' là một mảng' đối tượng'. Một 'đối tượng' không có thuộc tính' SelectedValue', chúng có thể là bất cứ thứ gì. –