2009-12-01 40 views
6

Tôi có ListBox dữ liệu ràng buộc vào danh sách của người sử dụng (bộ sưu tập):DataBind ListBox chọn mục để textbox

usersListBox.DataSource = null; 
    usersListBox.DataSource = _users; 
    usersListBox.DisplayMember = "Name"; 
    usersListBox.ValueMember = "Id"; 

Bây giờ tôi muốn đặc tính của sản phẩm được chọn sẽ được hiển thị trong hộp văn bản khác nhau, vì vậy tôi làm các ràng buộc:

nameTextBox.DataBindings.Add("Text", usersListBox.SelectedItem, "Name"); 
loginTextBox.DataBindings.Add("Text", usersListBox.SelectedItem, "Login"); 

Khi tải biểu mẫu Tôi có thể thấy giá trị của mục đã chọn xuất hiện trong hộp danh sách bị thay đổi, giá trị trong hộp văn bản vẫn giữ nguyên. Tôi có phải bắt selectItemChanged của listbox và lặp lại ràng buộc của textboxes? Hoặc tôi thiếu một cái gì đó và giá trị trong hộp văn bản nên thay đổi với việc thay đổi mục đã chọn?

Trả lời

12

Nếu ai đó cần câu trả lời: bạn phải tạo đối tượng nguồn ràng buộc và gán nó hộp danh sách và textbox:

usersBindingSource = new BindingSource(); 
usersBindingSource.DataSource = _presenter.Users; 

usersListBox.DataSource = usersBindingSource; 
usersListBox.DisplayMember = "Name"; 
usersListBox.ValueMember = "Id"; 

nameTextBox.DataBindings.Add("Text", usersBindingSource, "Name", true, DataSourceUpdateMode.OnPropertyChanged); 
loginTextBox.DataBindings.Add("Text", usersBindingSource, "Login", true, DataSourceUpdateMode.OnPropertyChanged); 
+0

Tôi chỉ muốn cho bạn biết rằng sau giờ nghiên cứu trong một dự án mới (đây là một vấn đề trong một dự án cũ), điều này giải quyết cả hai. Cảm ơn bạn rất nhiều vì đã đăng giải pháp để giúp đỡ người khác, vì đây chắc chắn là cách thích hợp để databind một hộp văn bản thành SelectedItem, nhưng nguồn dữ liệu cơ bản (ví dụ: bảng dữ liệu văn bản (dlinq) trong trường hợp của chúng tôi). Cảm ơn bạn rất nhiều. –

Các vấn đề liên quan