Quiero conectar un BindingSource
a una lista de objetos de clase y luego el valor de los objetos a un ComboBox.
¿Alguien puede sugerir cómo hacerlo?
public class Country
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
public Country()
{
Cities = new List<City>();
}
}
es mi clase y quiero vincular su name
campo a un BindingSource que luego podría asociarse con un ComboBox
c#
winforms
data-binding
combobox
Mobin
fuente
fuente
Respuestas:
Como se refiere a un cuadro combinado, supongo que no desea utilizar el enlace de datos bidireccional (si es así, utilice un
BindingList
)Para encontrar el país seleccionado en el cuadro combinado encuadernado, deberías hacer algo como:
Country country = (Country)comboBox1.SelectedItem;
.Si desea que el ComboBox se actualice dinámicamente, deberá asegurarse de que la estructura de datos que ha establecido como
DataSource
implementosIBindingList
; una de esas estructuras esBindingList<T>
.Consejo: asegúrese de vincular el
DisplayMember
a una propiedad de la clase y no a un campo público. Si su clase lo usapublic string Name { get; set; }
, funcionará, pero si lo usapublic string Name;
, no podrá acceder al valor y, en su lugar, mostrará el tipo de objeto para cada línea en el cuadro combinado.fuente
bindingSource1
la declaración?comboBox1.DataSource = bindingSource1.DataSource;
correcto? o debería sercomboBox1.DataSource = bindingSource1;
?Para un fondo, hay 2 formas de usar un ComboBox / ListBox
1) Agregue objetos de país a la propiedad Elementos y recupere un país como elemento seleccionado. Para usar esto, debe anular la ToString of Country.
2) Use DataBinding, establezca DataSource en un IList (List <>) y use DisplayMember, ValueMember y SelectedValue
Para 2) primero necesitará una lista de países
Y luego, en SelectionChanged,
fuente
auge.
fuente
Intente algo como esto:
Y si está utilizando WebForms, deberá agregar esta línea:
fuente
Este es el código que estoy usando ahora.
fuente
Si está utilizando un ToolStripComboBox, no hay ningún DataSource expuesto (.NET 4.0):
fuente
ToolstripComboBox.ComboBox.DataSource
. Parece queToolstripComboBox
es un envoltorio para un normalComboBox
.