Bonjour,

J'initialise des combox box à l'aide

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
        For i As Integer = 0 To dtSAF.Rows.Count - 1
            Fam.Items.Add(New ListItem(dtSAF.Rows(i).Item("SAF_Code"), dtSAF.Rows(i).Item("SAF_Code") + " - " + dtSAF.Rows(i).Item("SAF_FamilyProd")))
        Next
et la classe suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class ListItem
 
    Public Value As Object
    Public Text As String
 
    Public Sub New(ByVal NewValue As Object, ByVal NewText As String)
        Value = NewValue
        Text = NewText
    End Sub
 
    Public Overrides Function ToString() As String
        Return Text
    End Function
 
End Class
Cela fonctionne très bien.
Par contre lorsque je parcours la table de la base de donnée, je replis les combobox avec la valeur de la table.

J'ai ajouter la procédure suivante pour afficher le code et le libellé dans le combobox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
   Private Sub Fam_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Fam.TextChanged
        If Me.Fam.FindString(Me.Fam.Text, 0) > 0 Then
            Dim Pos As Int32 = Me.Fam.Text.Length
            Me.Fam.SelectedIndex = Me.Fam.FindString(Me.Fam.Text)
            Me.Fam.SelectionStart = Pos
            Me.Fam.SelectionLength = Me.Fam.Text.Length - Pos
        End If
    End Sub
Mon problème est que lorsque je parcours la table j'ai souvent 2 fois la même valeur dans un combox, et la l'affichage ne se fait plus je n'ai plus que le code sans le libellé.
J'ai tenter de d'affecter une valeur bidon avant la valeur de la table cela ne marche pas,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
        Me.Fam.Text = "z"
        Me.Fam.Text = verifnull(dtKE30.Rows(row).Item("IK3_pf"))
j'ai aussi modifié
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 If Me.Fam.FindString(Me.Fam.Text)
par
 If Me.Fam.FindString(Me.Fam.Text, 0)
mais rien n'y fait, lorsque le code du combo est le même entre les lignes de la table cela ne marche pas.

Cela me provoque aussi une erreur lors de l'enregistrement des données dans la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
drKE30("IK3_pf") = CType(Me.Fam.SelectedItem, ListItem).Value
Si quelqu'un a une solution

Merci
Tornade