Bonjour
Je suis confronté à un problème dont je ne comprends pas le pourquoi (et donc je ne trouve pas de solution).
Pour simplifier, j'ai 2 comboboxs Cbx1 et Cbx2, dont leurs Datasources sont bindées à une Dataview filtrée.
J'ai également une procédure qui "reset" les dataviews de ces 2 cbx, ce qui fait qu'elles se retrouvent bindées à une nouvelle DataView filtrée differemment.
A la fin de cette même procédure, il y a du code qui remet la valeur Text de ces 2 Cbx à celles qu'elles avaient avant le reset, si et seulement si ces anciennes valeurs appartiennent à la nouvelle dataview. (obligé de faire ca car sinon le fait d'affecter une nouvelle dataview à un Datasource provoque le Text = 1ère valeur de la nouvelle dataview...relou mais bon...)
Jusque là pas de problème... sauf dans le cas où ces 2 Cbx sont en fait mutuellement exclusives. Cela signifie que la valeur Text de la 1ère Cbx ne doit pas apparaitre dans la liste déroulante de la 2nde Cbx, et vice versa.
Donc dans l'événement qui appelle la procédure "Reset", j'ai rajouté ces lignes :
Pas d'erreur de syntaxe, mais à l'éxécution , ca fait......... rien du tout
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 UpdateEquipList() ' procédure reset If Cbx1.FindStringExact(Cbx2.Text) > -1 Then Cbx1.Items.Remove(Cbx2.Text) End If If Cbx2.FindStringExact(Cbx1.Text) > -1 Then Cbx2.Items.Remove(Cbx1.Text) End If
On retrouve Cbx1.text dans la liste déroulante de Cbx2 et vice versa...
Après quelques heures de recherche, je crois que les collections Cbx1.Items et Cbx2.Items sont en fait vides, vu que j'ai "rempli" ces comboboxs via leur datasource. (bizarrement quand je teste Cbx1.Items.Count, ca me retourne 79... et après le .Remove, .count=79 pareil)
J'ai donc essayé en remplaçant les lignes en gras par :et là je m'aperçois que VB ne me propose pas de méthode Remove ou Delete, ni même Item...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cbx1.Datasource.
...et comme je n'ai plus accès aux dataviews, je ne peut pas m'en servir.
Je ne peut pas non plus mettre ces lignes directement dans la procédure UpdateEquipList() puisque je dois attendre que Cbx1 et Cbx2 aient été resetées, avant de pouvoir de comparer leurs valeurs Text.
Du coup, me voilà bien coincé...
Quelqu'un aurait-il une idée svp ?
Partager