2014-09-10 37 views
8

Tôi đã một lớp mà cho tôi lỗi nàyKhông thể liên kết với các thành viên hiển thị mới trong combobox

public class Item 
{ 
    public string Name; 
    public int Id 

    public Item(string name, int id) 
    { 
     Name = name; 
     Id = id; 
    } 
} 

Đây là chức năng của tôi

var lstItems = new List<Item>(); 
while(...) 
{ 
    lstItems.Add(new Item(sAd_Ref, Convert.ToInt32(sAd_ID))); 
} 

comboBox1.DataSource = lstItems; 
comboBox1.ValueMember = "Id"; 
comboBox1.DisplayMember = "Name"; 

Vào thứ hai dòng cuối cùng tôi nhận được ngoại trừ

Không thể liên kết với thành viên hiển thị mới.

Trả lời

11

Bạn nên tạo các thuộc tính NameId. Bạn không thể liên kết ComboBox với các trường.

public string Name { get; set; } 
public int Id { get; set; } 

Nó cũng nêu tại docs:

ValueMember Property: Lấu hoặc đặt tài sản để sử dụng như giá trị thực tế cho các mục trong System.Windows.Forms.ListControl.

+0

Nó hoạt động nhờ – user3244721

+0

@Selman Genç Tôi biết đây là một năm cũ - nhưng bạn nói Bạn có thể 't ràng buộc ComboBox vào các trường. - bạn có một tham chiếu cho rằng bởi vì mã của tôi hoạt động. – Ken

8

Tôi biết bài đăng cũ nhưng câu trả lời được chấp nhận là không chính xác. The Op cần thiết để thay đổi thứ tự của cách ông đã được giao displayMember, valueMember và Datasource và sau đó lưu ý thêm dòng mã.

comboBox1.DisplayMember="Name"; 
comboBox1.ValueMember = "Id"; 
comboBox1.DataSource = lstItems; 
comboBox1.BindingContext = this.BindingContext; 
+0

đơn đặt hàng không thực sự có liên quan, bạn cần sử dụng các thuộc tính. – Oliver

+0

Điều này làm việc cho tôi nhưng một số tài liệu tham khảo nền hoặc tài liệu về lý do tại sao sẽ hữu ích. –

+2

@RhysJones Tôi muốn có tài liệu cho nó, tôi tìm thấy nó trực tuyến năm trước đây. Dường như có một lỗi trong Combobox và nó chỉ xảy ra trong những tình huống nhất định. Tôi nghĩ rằng nó chỉ xảy ra khi nguồn dữ liệu là một đối tượng nguồn kiểu danh sách và không phải là một datatable. Tôi biết điều đó thật kỳ lạ nhưng nó đã làm việc cho tôi trong tình huống độc đáo này - tôi không bận tâm đến việc nghiên cứu sâu sắc về lý do tại sao nó cư xử theo cách đó. Bạn biết đấy .... Tôi cần hoàn thành dự án của mình. – Ken

0

Trong trường hợp của tôi, tôi đã liên kết với tài sản mà có Browsable thuộc tính thiết lập để false.

I.e. các lỗi xảy ra do:

[Browsable(false)] 
public string MyProperty { get; set; } 

Và tôi đã giải quyết nó bằng cách đơn giản loại bỏ các thuộc tính:

public string MyProperty { get; set; } 
Các vấn đề liên quan