DataBind listBox选择项目到文本框

时间:2009-12-01 08:29:12

标签: c# winforms data-binding textbox listbox

我将ListBox数据绑定到用户列表(集合):

    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");

当表单加载时,我可以看到所选项目的值出现在文本框中,但是当列表框中的选定项目发生更改时,文本框中的值仍然相同。我是否必须捕获列表框的selectedItemChanged并重复绑定文本框?或者我错过了一些文本框中的值和值应该随更改所选项目而改变?

1 个答案:

答案 0 :(得分:13)

如果有人需要回答:您必须创建绑定源对象并为其分配列表框和文本框:

 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);