Bonjour à tous

Dans un formulaire il se trouve 2 combobox listant des catégories et des sous catégories (par datasource). Ces deux informations sont bien entendu lié (catégorie = table mère, sous catégories = table fille).

La valeur des combobox doit obligatoirement se trouver dans le datasource.

Au début j'ai utilisé le DropDownStyle = DropDownList qui remplit effectivement très bien ce rôle.

Néanmoins il y a une chose qui me déplait, plutôt à mes futurs utilisateur en fait, c'est que la recherche dans la ComboBox ne se fait que sur la première lettre, contrairement à la DataGridviewComboBoxCollum.

Si on tappe A puis L, au lieu d'arriver au valeur AL, on arrive à L

Bon pas grave, je décide de remettre le DropDownStyle à DropDown (La liste se position correctement en fonction de ce que tappe l'utilisateur) et décide de balancer un test dans l'évenement validating du comboBox pour vérifier que le texte se trouve bien dans le datasource du Combo.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    Private Sub ComboBox1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles ComboBox1.Validating
        Try
            If Not sender.DataSource.Find("Nom", sender.text.Replace("'", "''")) > -1 Then
                MsgBox("La valeur sélectionné n'est pas correct." & vbNewLine & "Sélectionnez une valeur de la liste.", MsgBoxStyle.Exclamation, "Erreur Saisie")
                e.Cancel = True
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erreur")
            sender.Text = Nothing
            e.Cancel = True
        End Try
    End Sub
Ca fonctionne nickel pour le comboBox mère (les catégories), mais pour le comboBox fille (sous catégories), j'ai le droit à la belle erreur suivante:
La propriété DataMember 'Nom' est introuvable dans le DataSource..
En ajoute un .datasource (le datasource du datasource) le find fonctionne mais sur le binding source mère (dans la liste des catégories en fait).

Avez vous une idée sur ce qui cloche?

P.S. Je suis ouvert à d'autre piste permettant de résoudre le problème initial bien entendu.