2009-12-01 102 views
6

我有ListBox的數據綁定到用戶列表(集合):的DataBind列表框中選擇的項目文本框

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

現在我想在不同的文本框中顯示所選項目的屬性,所以我做了綁定:

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

當窗體加載,我可以看到所選項目的值出現在文本框,但如果選擇列表框中中的項目更改,在文本框中的值仍然是相同的。我是否必須捕獲listbox的selectedItemChanged並重復綁定文本框?或者我錯過了一些東西,文本框中的值應該隨着所選項的變化而改變?

回答

12

如果有人需要回答:你必須創建綁定源對象,併爲其分配列表框和文本框:

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

我只是想讓你知道,在一個新的項目的研究小時後(這是一箇舊項目中的問題),這解決了這兩個問題。非常感謝您發佈解決方案以幫助其他人,因爲這絕對是將文本框數據綁定到SelectedItem的正確方式,但是是基礎數據源(即我們的案例中的datacontext table(dlinq))。非常感謝。 – 2011-11-19 01:10:58