GB3- Passer une liste d'une Form à l'autre
Bonsoir,
Aujourd'hui nous allons passer une liste complète d'une form à l'autre en une ligne de code.
1- Problème posé
Dans mon exemple j'ai deux Form avec deux ListView, et je souhaite en cliquant sur un bouton passer l'intégralité de la liste de la première Form dans la deuxième Form1.
2- Création de l'interface
Dans la Form principale, créons une ListView et deux boutons, le premier bouton servant à quitter notre application, le deuxième à envoyer la liste.
Créons aussi une ListBox que nous nommerons lv (lv pour listview)
Remplissons cette ListView avec 31 lignes comme ceci :
Public Sub Form_Open() Dim a As Integer For a = 0 To 30 lv.Add("text: " & a, "text: " & a) Next End
Dans l'évènement clic du premier bouton qui sert à fermer l'exemple écrivons:
Public Sub bquit_Click() Me.Close() End
Dans l'évènement clic du deuxième bouton voici le code :
3- Envoi des données
Public Sub bsend_Click() Form1.Rlist(lv.keys) 'Envoi toutes les clefs contenues dans lv sous forme de string[] End
4- Réception des données
Maintenant dans la deuxième Form, nous allons réceptionner cette liste de string de cette façon:
Créons une méthode publique (c'est à dire visible par les autres Form) de type Sub (qui ne renverra rien) dont le nom est Rlist (pour le diminutif de Réceptionne la liste), et en paramètre nous réceptionnons une liste nommée mylist et de type String[]
Une boucle For Next pour récupérer le contenu de la liste ainsi réceptionnée et le tour est joué comme ceci :
Public Sub Rlist(mylist As String[]) lv.Clear() Me.Show() For Each sKey As String In mylist lv.Add(sKey, sKey) Next End
Vous l'aurez compris, pour chaque clef dans ma liste Mylist,
ajoute à la liste lv les clefs.
Exécutons notre programme et admirons le résultat.
CQFD !
Voici le code de la Fmain et Form1 :
'****************** FMAIN ****************** Public Sub Form_Open() Dim a As Integer For a = 0 To 30 lv.Add("text: " & a, "text: " & a) Next End Public Sub bquit_Click() Me.Close() End Public Sub bsend_Click() Form1.Rlist(lv.keys) End '******************** FORM1 ******************** Public Sub Form_Open() Me.Center() End Public Sub Rlist(mylist As String[]) lv.Clear() Me.Show() For Each sKey As String In mylist lv.Add(sKey, sKey) Next End
Voilà pour aujourd'hui.