Alimenter listbox d'un autre formulaire [Résolu]

Signaler
Messages postés
6
Date d'inscription
lundi 14 juillet 2003
Statut
Membre
Dernière intervention
6 octobre 2008
-
Messages postés
6
Date d'inscription
lundi 14 juillet 2003
Statut
Membre
Dernière intervention
6 octobre 2008
-
Bonjour,
j'ai sur un formulaire une listbox, et je voudrais, sur simple click d'un bouton, alimenter une autre listbox.
J'y parviens si celle-ci se trouve sur le même formulaire, mais pas si elle appartient à un autre....

ça, ça marche :
LSTboiss.txt() = LSTboiss.selectedIndex
LSTtest.items.add(LSTboiss.text)

mais cette ligne, ou je veux alimenter la listbox du formulaire FRMmenu, ne fonctionne pas (LST.test s'alimente lorsque j'appuie sur le bouton, mais pas LSTcourse), et visual studio ne me retourne pas d'erreur.

FRMmenu.LSTcourse.items.add(LSTboiss.text)

(je suis sous Visual studio 2005)

Merci d'avance

2 réponses

Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
Salut Yornletard,

Comment charges-tu ton formulaire FRMmenu?
Il faut faire attention que lorsque tu tape FRMmenu dans ton code, qu'il s'agisse bien de la référence de ton formulaire visible, et pas d'un autre formulaire FRMmenu.

Ceci est la façon de faire la plus propre, car VB créé de toute façon une instance de chaque formulaire de ton projet au chargement de l'application. Ces instances sont accessibles par My.Forms ou simplement en tapant le nom du formulaire dans le code:
Sub ShowFRMmenu
    My.Form.FRMmenu.Show
    ' Ce qui donne la même chose que:
    FRMmenu.Show
End Sub

Ce qui se fait souvent aussi, c'est de déclarer une variable privée ou publique qui contiendra l'instance de ton formulaire. Tu peux alors y accéder par cette variable (MyForm dans ce cas). Ceci se fait nottement lorsque on veux afficher plusieurs fois un même formulaire:
Private MyForm As New FRMmenu
Sub ShowFRMmenu

    MyForm .Show

End Sub

Ceci par contre ne fonctionnera pas. Le formulaire s'affiche et est fonctionnel, mais il est alors plus compliqué d'y accéder par la suite, car aucune variable globale ne fait référence à son instance (On peux y accéder par une collection des formulaires chargés dans My.Application.OpenedForms sauf erreur). Toutefois, cette technique est souvent utilisé pour afficher une boite de dialogue modale par exemple, qui n'a pas besoins d'être modifié une fois affichée  :
Sub ShowFRMmenu
    Dim MyForm As New FRMmenu

    MyForm .Show
End Sub
Messages postés
6
Date d'inscription
lundi 14 juillet 2003
Statut
Membre
Dernière intervention
6 octobre 2008

Merci ! ça fonctionne j'avais mal chargé mon FRMmenu !
grâce à ton code, ça marche :

Sub ShowFRMmenu
    My.Forms.FRMmenu.Show()
    FRMmenu.Show()
End Sub