Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

FAQ VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 36, nombre de questions : 239, dernière mise à jour : 24 mai 2015  Ajouter une question

 

Cette FAQ a été réalisée pour répondre aux questions les plus fréquemment posées sur le forum Développement DotNET

Je tiens à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle contient sont correctes. Les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci.

Sur ce, je vous souhaite une bonne lecture.


SommaireWinFormsListBox (3)
précédent sommaire suivant
 

Imaginons une liste remplie avec le code suivant :

Code vb.net : Sélectionner tout
1
2
3
For cmpt As Int32 = 1 To 100 
    Me.ListBox1.Items.Add("élément" & cmpt.ToString) 
Next
Je veux sélectionner l'ensemble des éléments qui commence par la chaine « élément1 »

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cmpt = -1 
Do 
    cmpt = ListBox1.FindString("élément1", cmpt) 
    If cmpt <> -1 Then 
        If ListBox1.SelectedIndices.Count > 0 Then 
            If cmpt = ListBox1.SelectedIndices(0) Then 
                Exit Do 
            End If 
        End If 
        ' Utilise SetSelected pour forcer la sélection 
        ListBox1.SetSelected(cmpt, True) 
    End If 
Loop While cmpt <> -1 AndAlso cmpt < Me.ListBox1.Items.Count - 1 
ListBox1.MultiColumn = True

Mis à jour le 30 octobre 2013 bidou

C'est désormais assez facile à faire. Ajoutez une zone de liste dans un formulaire. Dans l'évènement Load de la feuille, nous allons remplir et modifier un peu cette liste

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
Dim cmpt As Int32 
For cmpt = 1 To 100 
    Me.ListBox1.Items.Add("élément" & cmpt.ToString) 
Next 
With Me.ListBox1.Items 
    .Remove("élément30") 
    .RemoveAt(50) 
    .Insert(29, "élément30") 
End With
Pour récupérer les éléments sélectionnés afin de refaire la liste, ajoutez le code suivant dans un bouton par exemple :

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
Dim MonEnum As IEnumerator = Me.ListBox1.SelectedItems.GetEnumerator 
Dim MaList As ListBox.ObjectCollection = New ListBox.ObjectCollection(Me.ListBox1) 
While MonEnum.MoveNext 
    MaList.Add(MonEnum.Current) 
End While 
Me.ListBox1.Items.Clear() 
Me.ListBox1.Items.AddRange(MaList)

Mis à jour le 30 octobre 2013 bidou

Ce bout de code permet de montrer comment on peut lister l'ensemble des fichiers et sous dossiers d'un répertoire dans une Listbox. Pour cela, il suffit d'utiliser une fonction récursive c'est à dire une fonction qui va s'appeler elle-même.

Code vb.net : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Sub ListerMesRepertoire(ByVal Rep As String) 
    Try 
        ' Récupère la liste des entrées du répertoire 
        Dim Liste As String() = Directory.GetFileSystemEntries(Rep) 
        Dim Entree As String 
  
        For Each Entree In Liste 'Pour chaque entrée de la liste 
            Dim TmpName As String = Microsoft.VisualBasic.Mid(Entree, Len(Rep) + 1) 'On découpe proprement le nom du fichier ou répertoire 
            TmpName = Replace(TmpName, "'\'", "") ' On enlève les caractères parasites 
  
            If File.Exists(Entree) Then     ' Si c'est un fichier 
                ListBox1.Items.Add(TmpName) 
            Else   'Si  c'est un répertoire 
                ListerMesRepertoire(Entree) ' On liste le contenue de ce répertoire 
            End If 
        Next (Entree) 
    Catch Ex As System.UnauthorizedAccessException ' Si le répertoire est interdit 
        Exit Sub 
    Catch e As Exception 'en cas d'erreurs 
        MsgBox("Erreur : " & e.Message, MsgBoxStyle.Critical) 
    End Try 
End Sub

Mis à jour le 30 octobre 2013 Aspic

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -