Ho un ListBox (MyListBox
) sullo schermo e una casella di testo (MyTextBox
).Winforms, databinding, Listbox e textbox
Il ListBox è pieno di una lista (Of T), che sono tutti articoli personalizzati.
Ora cerco di fare questo:
Il ListBox' origine dati è la lista (Of T).
Ora, quando un elemento cambia, voglio che la casella di testo sia aggiornata ad una particolare proprietà dell'elemento selezionato nel mio ListBox.
In Codice ciò significa:
Me.MyListBox.DisplayMember = "SelectionName"
Me.MyListBox.ValueMember = "Id"
MyTextbox.DataBindings.Add(New Binding("Text", Me._listOfItems, "SelectedItem.Comment", True, DataSourceUpdateMode.OnPropertyChanged))
Me.MyListBox.DataSource = Me._listOfItems
questo non funziona. Ma quando lego a SelectedValue invece di SelectedItem funziona perfettamente.
Il _listOfItems
è dichiarato come questa:
Dim _listOfItems As List(Of MyItem) = New List(Of MyItem)()
Dove MyItem
è questo:
public class MyItem
{
public string SelectionName { get; set; }
public int Id { get; set; }
public string Comment { get; set; }
}
ho provato l'override del ToString()
in MyItem
in modo che sarebbe usare quella. Ma neanche questo funziona.
A chi importa di provarlo?
Grazie!
-Snakiej
Il valore selezionato è l'ID, ho bisogno del commento. E non posso usarlo per chiamare il database :) Proverò la tua soluzione! – Snake
Ho capito! Hai ragione, se quello che vuoi è offrire una scelta di scelta all'utente, non facciamolo con l'Id.= P –
l'opzione 5 non è necessaria :) e per l'opzione 4: utilizzo questa associazione: nuovo Binding ("Testo", bindingSource1, "Commento", ...) poiché utilizza già la proprietà .Current del bindingSource ! Grazie! – Snake