¿Puedo preguntar por qué ambos cuadros combinados se disparan entre sí de modo que ambos tengan los mismos valores? ¿No puedo compartir una sola lista y tengo 2 cuadros combinados con diferente texto seleccionado?Compartir ComboBox DataSource
private void Form1_Load(object sender, EventArgs e)
{
BindingList<string> list = new BindingList<string>();
list.Add("A");
list.Add("B");
list.Add("C");
list.Add("D");
bind(cbo1, list);
bind(cbo2, list);
}
private void bind(ComboBox combobox, BindingList<string> list)
{
// commented lines are in actual code,
// but appears unimportant in this question
//combobox.DropDownStyle = ComboBoxStyle.DropDown;
//combobox.AutoCompleteSource = AutoCompleteSource.ListItems;
//combobox.AutoCompleteMode = AutoCompleteMode.Suggest;
combobox.DataSource = list;
//combobox.Focus();
//combobox.Text = string.Empty;
//combobox.SelectedText = string.Empty;
}
ACTUALIZACIÓN: Ok, ahora me enteré de la cuestión es que el origen de datos es manejada por algunos BindingContext y CurrencyManager para sincronizar automáticamente la lista. Pero creo que alguien debe saber cómo desactivar este comportamiento.
No deseo utilizar 2 listas diferentes porque deseo poder modificar esta lista única en tiempo de ejecución y hacer que los cambios se reflejen en todos los ComboBoxes. Cualquier método para lograr esto sería muy apreciado.
Bien, puedo confirmar esto. Puede (debería) simplificar 'bind()' para simplemente 'cbo1.DataSource = list;' –
@Henk ¿cuál es la advertencia? – Jake
No conozco la causa exacta, la simplificación es definir (restringir) mejor el problema. –