Parece que tiene una aplicación WinForms .NET y un ComboBox (configurado en el estilo "DropDown"), y que ComboBox tiene varios elementos que son idénticas, cosas raras suceden. Específicamente, el índice del elemento seleccionado puede cambiar sin activando el evento SelectedIndexChanged..NET WinForms ComboBox, elementos idénticos y el evento SelectedIndexChanged
Por supuesto, esto causa confusión masiva y errores extraños y oscuros, que es lo que he estado jalando últimamente.
Aquí está un ejemplo simple que puede utilizar para ver lo que estoy hablando:
- Hacer un nuevo proyecto .NET WinForms (yo uso VB.NET, pero no dude en traducir - es bastante simple) .
- Coloque un ComboBox, un botón y un TextBox (establezca MultiLine = True) en el formulario.
- utilizar el siguiente código para cargar el ComboBox con 3 artículos idénticos e imprimir algunos mensajes de estado cuando se dispara el evento SelectedIndexChanged, y para ver lo que el índice seleccionado es (a través de un botón):
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
TextBox1.Text = TextBox1.Text & vbNewLine & "ComboBox SelectedIndexChanged event fired." & vbNewLine & _
"SelectedIndex is: " & ComboBox1.SelectedIndex
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ComboBox1.Items.Add("John Doe")
ComboBox1.Items.Add("John Doe")
ComboBox1.Items.Add("John Doe")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = TextBox1.Text & vbNewLine & _
"Button clicked." & vbNewLine & _
"SelectedIndex is: " & ComboBox1.SelectedIndex
End Sub
Ejecute el proyecto y seleccione un elemento del ComboBox (por ejemplo, el del medio). Luego, haga clic en la flecha desplegable de ComboBox, pero NO SELECCIONE NADA. Haga clic en el botón (Button1 por defecto) y vea lo que dice.
A menos que yo he perdido la cabeza, esto es lo que debería ver:
ComboBox SelectedIndexChanged event fired. SelectedIndex is: 1 Button clicked. SelectedIndex is: 0
En otras palabras, el índice seleccionado ha cambiado, pero sin el evento SelectedIndexChanged disparar!
Esto solo ocurre cuando los elementos en el ComboBox son idénticos. Si son diferentes, esto no sucede. (Tampoco sucede si el estilo "DropDown" del ComboBox está establecido en "DropDownList")
Sospecho que esto puede ser un error en el framework .NET y no es algo que pueda arreglar, pero en el modo apagado posibilidad de que alguien más tenga alguna idea sobre qué hacer aquí (¡o qué podría estar haciendo mal!), ¡por favor, toque! No puedo explicar este comportamiento o evitarlo (espero que el SelectedIndex siga siendo el mismo a menos que, ¿sabes ?, ¡realmente lo CAMBIAS seleccionando algo más!)
¡Muchas gracias por esa respuesta! Eso fue * increíblemente * informativo! (¡También es bueno saber que no estoy loco y que hay una explicación legítima para este comportamiento!) – Keithius
Acepto que fue una gran respuesta, así que voté la respuesta – MikeScott8