He terminado un programa en VB.NET en el que se le muestra al usuario una ventana con dos combobox, en el primero de ellos se muestran los clientes, en el segundo los proyectos de dicho cliente.
Todo lo saco de una base de datos MySQL y ya lo tengo filtrados, cuando selecciono el cliente solo salen los proyectos de dicho cliente correctamente.
Mi problema recae en que tengo muchisimos clientes y dentro de cada uno varios proyectos, entonces el usuario si tiene que buscar un cliente concreto, lo hace normalmente con su nombre acortado, por ejemplo si es la Embaja de Angola, solo pone Angola, entonces con esto:
cbClientes.DropDownStyle = ComboBoxStyle.DropDown
cbClientes.AutoCompleteMode = AutoCompleteMode.Suggest
cbClientes.AutoCompleteSource = AutoCompleteSource.ListItems
Lo que consigo es que solo me muestre registros del Combo que empiecen con la letra que pongo, no me de sugerencias que contengan las letras deseadas.
Luego tengo otra prueba que que es para autocompletar pero que no consigo que lo haga como deseo, si no que me autocompleta, logicamente, según voy escribiendo, así que si pongo Angola o angola, no me saca Embaja de Angola, así que vuelvo al principio del problema que los usuarios han de escribir totalmente la palabra EMBAJADA, aquí os muestro el código:
'Autocompletar Campos
Private Sub cbClientes_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cbClientes.KeyUp
AutoCompleteCombo_KeyUp(cbClientes, e)
End Sub
Public Sub AutoCompleteCombo_KeyUp(ByVal cbClientes As ComboBox, ByVal e As KeyEventArgs)
Dim sTypedText As String
Dim iFoundIndex As Integer
Dim oFoundItem As Object
Dim sFoundText As String
Dim sAppendText As String
Select Case e.KeyCode
Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Delete, Keys.Down
Return
End Select
sTypedText = cbClientes.Text
iFoundIndex = cbClientes.FindString(sTypedText)
If iFoundIndex >= 0 Then
oFoundItem = cbClientes.Items(iFoundIndex)
sFoundText = cbClientes.GetItemText(oFoundItem)
sAppendText = sFoundText.Substring(sTypedText.Length)
cbClientes.Text = sTypedText & sAppendText
cbClientes.SelectionStart = sTypedText.Length
cbClientes.SelectionLength = sAppendText.Length
End If
End Sub
Para resumir, estoy intentando que al poner palabras me de sugerencias de registros que contengan dichas palabras. Y no solo que empiecen como consigo hacer.
Gracias!