tôi đã một ComboBox nơi được lấp đầy bằng một bộ sưu tập của Anonymous Type:C# Anonymous Loại truy cập từ phương pháp khác
var results = (from row in data.Tables[0].AsEnumerable()
select new {
Id = row.Field<int>("id"),
Name = row.Field<string>("Name
}).Distinct();
myComboBox.ValueMember = "Id";
myComboBox.DisplayMember = "Name";
foreach (var n in results)
{
myComboBox.Items.Add(n);
}
Sau đó, trong phương pháp SelectedIndexChanged của combobox, tôi muốn lấy Id của chọn mục, nhưng tôi không thể truy cập vào thuộc tính "Id", trong myComboBox.SelectedItem là đối tượng được chọn.
private void myComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (myComboBox.SelectedItem != null)
{
var x = myComboBox.SelectedItem;
¿¿¿ ???
}
}
Bất kỳ ý tưởng nào?
nếu bạn chỉ cần id, bạn có thể sử dụng myCombobox.SelectedValue không? – saus
Từ khóa * động * sẽ giúp bạn gặp rắc rối. Các thành viên của một loại ẩn danh có khả năng truy cập * nội bộ *. Hay nói cách khác, bạn không thể truy cập chúng khi mã giao diện người dùng của bạn ở trong một hội đồng riêng biệt. Điều này rất phổ biến, việc tách giao diện người dùng khỏi mô hình dữ liệu là một sự theo đuổi xứng đáng. Đơn giản chỉ cần không sử dụng một loại vô danh ở đây. –
Sử dụng loại anon và/hoặc động không phải là câu trả lời ở đây. Có gì sai với loại nhẹ của riêng bạn? (Hoặc, đối với ví dụ cụ thể này, ['KeyValuePair'] (http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx)?) –
LukeH