Tengo un ListBox (MyListBox
) en mi pantalla, y un Textbox (MyTextBox
).Winforms, databinding, Listbox y textbox
ListBox está lleno con una lista (De T), que son todos los elementos personalizados.
Ahora trato de hacer esto:
El cuadro de lista' fuente de datos es la lista (Of T).
Ahora cuando un elemento cambia, quiero que el cuadro de texto se actualice a una propiedad particular del elemento seleccionado en mi ListBox.
En este código 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
esto no funciona. Pero cuando me uno a SelectedValue en lugar de SelectedItem, funciona perfectamente.
El _listOfItems
está declarada como esto:
Dim _listOfItems As List(Of MyItem) = New List(Of MyItem)()
Dónde MyItem
es la siguiente:
public class MyItem
{
public string SelectionName { get; set; }
public int Id { get; set; }
public string Comment { get; set; }
}
he intentado anular el ToString()
en MyItem
por lo que sería usar eso. Pero eso tampoco funciona.
¿Alguien se preocupa por probarlo?
Gracias!
-Snakiej
El SelectedValue es el id, necesito el comentario. Y no puedo usar eso para llamar a la base de datos :) ¡Probaré tu solución! – Snake
¡Lo tengo! Tiene razón, si lo que quiere es ofrecerle una selección de opciones al usuario, no lo hagamos con el Id.= P –
opción 5 no es necesaria :) y para la opción 4: uso este enlace: nuevo Encuadernación ("Texto", bindingSource1, "Comentario", ...) ya que usa la propiedad .Current de bindingSource ! ¡Gracias! – Snake