Buenas tardes.
Estoy haciendo 2 combobox uno dependiente del anterior desde una base de datos. El combobox1 se llena correctamente, pero el combobox2 añade los elementos cada vez que cambio la selección del combobox1.
¿Cuál es mi error si quiero que sólo muestre las opciones de lo que estoy seleccionando?'Cargar el combobox1'
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim con As New MySqlConnection
con.ConnectionString = ("Server=localhost;DataBase=autos;uid=root;pwd=root").ToString
con.Open()
Dim query As String = "select distinct MARCA from autos"
Dim cmd As New MySqlCommand(query, con)
Dim reader As MySqlDataReader = cmd.ExecuteReader
While reader.Read
ComboBox1.Items.Add(reader.GetString("MARCA"))
End While
End Sub
'Cargar combobox2 dependiendo selección de combobox1'
Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox1.SelectionChangeCommitted
Dim con As New MySqlConnection
con.ConnectionString = ("Server=localhost;DataBase=autos;uid=root;pwd=root").ToString
con.Open()
Dim query As String = "select MODELO from autos where MARCA='" + ComboBox1.SelectedItem + "'"
Dim cmd As New MySqlCommand(query, con)
Dim reader As MySqlDataReader = cmd.ExecuteReader
While reader.Read
ComboBox2.Items.Add(reader.GetString("MODELO"))
End While
End Sub
el combobox2 añade los elementos cada vez que cambio la selección del combobox1
...
While reader.Read
ComboBox2.Items.Add(reader.GetString("MODELO"))
End While
...
Tú mismo estás diciendo lo que hace el código, ahora pregúntate lo que no hace o faltaría por hacer: eliminar los elementos previamente agregados a la colección de elementos del
ComboBox...
- MSDN - ComboBox.ObjectCollection.Clear Method (https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.objectcollection.clear%28v=vs.110%29.aspx)
O bien puedes optar por establecer un origen de datos y así simplificar la adición y eliminación de dichos elementos...
- MSDN - ComboBox.DataSource Property (https://msdn.microsoft.com/en-us/library/x8160f6f(v=vs.90).aspx)
Saludos.