Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation Control ComboBox

2 réponses
Avatar
JFGerard
Pour remplir une Combobox, j'ai utilisé la sequence suivante :
Private Structure strPiece
Public Nom As String
Public Numero As String
End Structure

Private Sub Init_Mesures_cbPieces()

Dim xi As Integer
Dim xPiece As strPiece

xPiece = Nothing ' pour etre sur qu'il n'y a rien dans xPiece
Me.cbMesurePiece.BeginUpdate() ' accelerer le traitement
Me.cbMesurePiece.Items.Clear() ' vider la combobox
For xi = 0 To xTablePiece.Rows.Count - 1 ' pour toutes les lignes de
la table
xPiece.Nom = xTablePiece.Rows(xi).Item("LibPiece") ' le libelle
de la piece
xPiece.Numero = xTablePiece.Rows(xi).Item("NumPiece") ' le
numero de la piece
Me.cbMesurePiece.Items.Add(xPiece) ' la structure est rangée
dans la CB
Next
Me.cbMesurePiece.EndUpdate() ' mise a jour du control a l'ecran
end sub

Ca marche bien et sur un clic, je recupere bien l'element selectionné, MAIS
...
la liste associée lors du deroulement de la Combobox ne présente pas
les valeurs devant etre affichées (le contenu de la colonne LibPiece de la
table xTablePiece). A la place j'ai un truc du genre
"NomduProjet"."NomdelaClasse"+"NomdelaStructure", identique pour toutes les
lignes et je ne sais pas comment positionner la propriété DisplayMember (je
sens que c'est la que reside le pb ?) de la combobox pour voir les valeurs de
la table.
Merci a tous.
JFG

2 réponses

Avatar
Millox Frédéric
Bonjour,

Essaye ce bout de code :

With cbMesurePiece
.DataSource = xTablePiece
.DisplayMember = "LibPiece"
.ValueMember = "NumPiece"
.Text = ..... Texte affiché en 1er à l'init graphique de l'objet
End With

A+

--
fmillox


"JFGerard" a écrit :

Pour remplir une Combobox, j'ai utilisé la sequence suivante :
Private Structure strPiece
Public Nom As String
Public Numero As String
End Structure

Private Sub Init_Mesures_cbPieces()

Dim xi As Integer
Dim xPiece As strPiece

xPiece = Nothing ' pour etre sur qu'il n'y a rien dans xPiece
Me.cbMesurePiece.BeginUpdate() ' accelerer le traitement
Me.cbMesurePiece.Items.Clear() ' vider la combobox
For xi = 0 To xTablePiece.Rows.Count - 1 ' pour toutes les lignes de
la table
xPiece.Nom = xTablePiece.Rows(xi).Item("LibPiece") ' le libelle
de la piece
xPiece.Numero = xTablePiece.Rows(xi).Item("NumPiece") ' le
numero de la piece
Me.cbMesurePiece.Items.Add(xPiece) ' la structure est rangée
dans la CB
Next
Me.cbMesurePiece.EndUpdate() ' mise a jour du control a l'ecran
end sub

Ca marche bien et sur un clic, je recupere bien l'element selectionné, MAIS
...
la liste associée lors du deroulement de la Combobox ne présente pas
les valeurs devant etre affichées (le contenu de la colonne LibPiece de la
table xTablePiece). A la place j'ai un truc du genre
"NomduProjet"."NomdelaClasse"+"NomdelaStructure", identique pour toutes les
lignes et je ne sais pas comment positionner la propriété DisplayMember (je
sens que c'est la que reside le pb ?) de la combobox pour voir les valeurs de
la table.
Merci a tous.
JFG



Avatar
JFGerard
Bonjour
Merci de cette reponse efficace. ca marche.
J'avais deja essayé cela mais je m'etais heurté alors a la phase
"utilisation de la CB".
En effet, pendant la phase d'initialisation de la CB, l'evenement
SelectedItemChanged est monté deux fois par le constructeur (je suppose que
c'est lui qui joue !!).
A la premiere invocation, comme la CB n'est pas encore remplie, la propriete
"SelectedValue" renvoie le type de l'element ayant rempli la CB (au cas
particulier System.data.datarowview) et comme je ne m'attendais pas a cette
info, une "invalid cast exception" plante l'application.
A la deuxieme, on recupere - pendant la phase de remplissage - la premiere
valeur de la liste.
Apres, lors d'une ouverture de la CB, je recupere bien la "selected value",
le "text", par contre le "selected item" est toujours de type
"system.data.datarowview" et j'ai encore quelques difficultés a le recuperer
completement (erreur "invalid cast exception" !!).

j'ai donc encore ces deux questions :
comportement a l'initialisation
gestion du "selected item"
peut-etre que les DevDays du 28/03 me donneront l'occasion de poser la
question a un gourou de la grande famille !!! ( .... si tu as des reponses ?)
Mais, du moins, ca commence a marcher ....
Merci et a+

"Millox Frédéric" a écrit :
Essaye ce bout de code :

With cbMesurePiece
.DataSource = xTablePiece
.DisplayMember = "LibPiece"
.ValueMember = "NumPiece"
.Text = ..... Texte affiché en 1er à l'init graphique de l'objet
End With

A+

--
fmillox