2009-12-01 6 views
6

J'ai lient les données ListBox à la liste des utilisateurs (collection):DataBind listBox élément sélectionné textboxes

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

Maintenant, je veux les propriétés de l'élément sélectionné à afficher dans différentes zones de texte, donc je fais la liaison:

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

lorsque la charge forme, je peux voir que les valeurs de l'élément sélectionné apparaissent dans les zones de texte, mais quand l'élément sélectionné dans listBox est changé, les valeurs dans les zones de texte sont toujours les mêmes. Dois-je attraper selectedItemChanged de listbox et répéter la liaison des zones de texte? Ou il me manque quelque chose et les valeurs dans les zones de texte devraient changer avec la modification de l'élément sélectionné?

Répondre

12

Si quelqu'un a besoin de réponse: vous devez créer un objet source de liaison et lui attribuer la zone de liste et zones de texte:

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

Je voulais juste vous faire savoir que, après des heures de recherche dans un nouveau projet (ce qui a été problème dans un vieux projet), cela a résolu les deux. Merci beaucoup d'avoir posté la solution pour aider les autres, car c'est certainement la bonne façon de cataloguer une zone de texte à SelectedItem, mais la source de données sous-jacente (c'est-à-dire la table datacontext (dlinq) dans notre cas). Merci beaucoup. –

Questions connexes