2009-12-01 12 views
6

I ListBox Daten binden Liste des Benutzers (Sammlung) habe:DataBind ListBox ausgewähltes Element area per

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

Jetzt mag ich Eigenschaften von ausgewählten Elementen in verschiedenen Textfeldern angezeigt werden, so dass ich die Bindung:

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

wenn Form Last kann ich sehen, dass die Werte von ausgewählten Elementen in Textfeldern erscheinen, aber wenn ausgewähltes Element in ListBox geändert wird, Werte in Textfeldern sind immer noch die gleiche. Muss ich selectedItemChanged von Listbox abfangen und Bindung von Textfeldern wiederholen? Oder ich vermisse etwas und die Werte in den Textfeldern sollten sich mit dem Ändern des ausgewählten Elements ändern?

Antwort

12

Wenn jemand braucht Antwort: Sie Bindungsquellobjekt erstellen müssen, und weisen Sie im Listenfeld und Textfelder:

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

Ich wollte nur, damit Sie wissen, dass in einem neuen Projekt nach Stunden der Forschung (dies wäre ein Problem in einem alten Projekt), löste das beides. Vielen Dank für die Bereitstellung der Lösung, um anderen zu helfen, da dies definitiv die richtige Methode ist, ein Textfeld an SelectedItem zu binden, aber die zugrunde liegende Datenquelle (d. H. DataContext-Tabelle (dlinq) in unserem Fall). Ich danke dir sehr. –

Verwandte Themen