2009-12-01 11 views
6

ho associare dati ListBox per elenco di utenti (raccolta):DataBind listBox elemento selezionato per le caselle di testo

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

Ora voglio proprietà dell'elemento selezionato per essere mostrato in diverse caselle di testo, in modo da fare il legame:

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

quando carico forma I può vedere che i valori della voce selezionata in textboxes, ma quando elemento selezionato in listBox viene modificata, i valori nelle caselle di testo sono ancora lo stesso. Devo intercettare SelectedItemChanged di listbox e ripetere l'associazione di caselle di testo? O mi manca qualcosa e i valori nelle caselle di testo dovrebbero cambiare con la modifica dell'elemento selezionato?

risposta

12

Se qualcuno ha bisogno di risposta: è necessario creare oggetto di origine vincolante e assegnarlo casella di riepilogo e caselle di testo:

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

Volevo solo farvi sapere che dopo ore di ricerche in un nuovo progetto (questo è stato un problema in un vecchio progetto), questo ha risolto entrambi. La ringrazio molto per aver postato la soluzione per aiutare gli altri, in quanto questo è sicuramente il modo corretto di catalogare una casella di testo su SelectedItem, ma l'origine dati sottostante (ad esempio la tabella datacontext (dlinq) nel nostro caso). Grazie mille. –

Problemi correlati