Modifier la collection d'un ComboBox et autres
Bonjour, Bonsoir,
(oui je pense qu'il faudra bientôt créé un forum juste pour mes questions bêtes :aie:^^...)
Alors plusieurs questions:
1: Est-il possible de mettre une ArrayList que j'ai initialisé, dans un ComboBox en tant que collection avec une simple ligne de code (sans avoir à ajouté item par item). Si oui, comment?
2: Est-il possible de rétablir la couleur de base d'un control? Si oui, comment?
3: Est ce que vous connaissez un site qui liste toutes les méthodes possible ( de manière "compacte" du même style que ce que j'ai fait juste en dessous durant plusieurs heures en piochant les différentes méthodes par ici et par la ....)
Merci d'avance pour vos réponses :roll:
List / ArrayList :
Il y a les List, comme dans l'exemple simpliste. On a un Index pour repérer les éléments.(Pas de clé).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| Imports System.Collections
Dim L As New ArrayList() 'On crée une collection ArrayList
Imports System.Collections.Generic
Dim lst As New List(Of Decimal) 'Créons une liste ne contenant que des 'Decimal'.
L.Add("Bonjour") 'On ajoute un élément à la collection
Dim L As ArrayList = ArrayList.Repeat("A", 5) 'On crée une ArrayList de 5 éléments contenant chacun "A" (on répète "A")
i = L(0) 'Affiche le 1er élément
i = L.Count 'On affiche le nombre d'élément.
L.Remove("Bonjour") 'On enlève l'élément de la liste qui contient "Bonjour"
L.RemoveAt(0) 'On enlève l'élément 0 de la liste
L.Sort() 'Trie la collection
L.Clear() 'Efface tous les éléments
L.Contains (élément) ' Retourne True si la liste contient élément.
L.Insert( position, Ainserrer) ' Insérer à un index spécifié
L.Containts (élément) ' Retourne True si la liste contient 'élément'.
i = l.BinarySearch("lulu") ' Cherche le string dans une collection trié
L.Add(Nothing) 'est accepté: on ajoute un élément vide
lst.Remove("lulu") 'supprime le premier élément contenant "lulu"
lst.RemoveAt(3) 'supprime le 4ème élément
lst.RemoveRange(3,2) 'supprime du 4ème élément au 5ème élément
lst.IndexOf("lulu") 'retourne l'index de l'élément qui contient "lulu"
lst.IndexOf("lulu", 2,7) recherche à partir de l'élément 2 et sur 7 éléments.
Dim array(14) As String 'tableau
lst.CopyTo(array) 'copier la list dans le tableau
lst.CopyTo(array, 6) 'copier 6 éléments de la list dans le tableau
lst.CopyTo(2, array, 12, 3) 'index de départ dans list, tableau, index de départ dans array, nombre |
Hashtable
C'est un 'Dictionnaire' qui comporte des couples clé-élément, des paires clé-valeur.
Ces couples sont de type Objet-Objet.
La clé toujours unique permet de retrouver la valeur, La clé ne doit pas être vide non plus.
Code:
1 2 3 4 5 6 7 8
| Dim H As New Hashtable
H.Add(Clé,Valeur) 'Ajoute un élément
H.Item(Clé) 'Retourne l'élément correspondant à une clé.
H.ContainsKey(Clé) 'Retourne True si la Clé est dans la table.
H.ContainsValues(Valeur) 'Retourne True si la valeur est dans la table.
H.Clear 'Efface tous les éléments
H.Remove(Clé) 'Supprime l'élément ayant une clé spécifiée.
i = H.Item("trois") 'Recherche la valeur correspondant à la clé "trois" |
Dictionnary
A partir de VB 2005, il y a cette collection de type Dictionnaire (Clé-Valeur) mais elle utilise les génériques.
La clé doit être unique (pas de doublon de clé).
La récupération d'une valeur à partir de sa clé est très rapide.(Utilisation d'un hachage)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Dim Dic As New Dictionary(Of String, String) ' Créons un Dictionnary avec des clés de type String et des valeurs de type String.
If Not Dic.ContainsKey("ht") Then ' Ajout d'élément en vérifiant si la clé n'existe pas
Dic.Add("ht", "hypertrm.exe")
End If
Dic("doc") = "winword.exe" ' Modifier la valeur correspondant à la clé 'doc'
i = "winword.exe" ' Récupérer une valeur correspondant à une clé
Dic.Remove("doc") 'Enlever un élément
Dic.ContainsKey("ht") ' permet aussi de tester si une clé existe. |
SortedList
Combine List et Dictionnaire avec un tri automatique.
Il permet l'accès aux valeurs par l'intermédiaire des clés associées ou des index.
C'est un hybride de HashTable et de Array.
La séquence d'index est basée sur la séquence de tri. Quand un élément est ajouté, il est inséré dans l'ordre de tri adéquat, et l'indexation s'ajuste en conséquence. Le tri est donc automatique.
Code:
1 2 3 4 5 6 7 8 9 10
| mySL.Add(Clé,Valeur) ' Permet dajouter un élément
mySL.Item(CLE) 'retourne la valeur correspondant à la clé CLE
mySL.GetKey(3) 'retourne la Clé qui est dans l'élément d'index 3
mySL.GetByIndex(3) 'retourne la valeur qui est dans l'élément d'index 3
mySL.Count 'Nombre d'éléments
mySL.Capacity) 'nombre d'éléments possible,automatique, on n'a pas à s'en occuper. |
Les SortedList(Of..) sont des SortedList génériques avec Clé et valeur ,triées sur la clé. Ressemble à SortedDictionary, mais occupe moins de mémoire et est moins rapide pour les insertions/suppressions.
Les SortedDictionnary(Of..) sont des collections génériques avec Clé et valeur ,trié sur la clé.
String Collection
L'espace System.Collections.Specialized fournit ces nouveaux types de collection très spécifiques, elles ne sont faites que pour un seul type:
StringCollection ne peut contenir que des chaînes (cela devrait aller plus vite)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Dim myCol As New StringCollection() ' Créer une StringCollection.
Dim myArr() As [String] = {"rouge", "vert", "orange", "vert",) 'Créer un tableau de String, l'ajouter( en fin) à la collection.
myCol.AddRange(myArr)
myCol.Add("marron") 'Ajouter un élément à la fin de la collection
myCol.Insert(3, "bleue") 'Insérer un élément à l'index 3
myCol.Remove("orange") 'Enlever un élément
myCol.Contains("jaune") ' La collection contient t'elle "jaune"?
Dim myArr2(myCol.Count) As [String] ' Copie la collection dans un tableau.
myCol.CopyTo(myArr2, 0)
myCol.Clear() ' Efface toutes les strings de la Collection. |
Tableau
Les tableaux vous permettent de faire référence à un ensemble de variables par le même nom et d'utiliser un numéro, appelé index ou indice, pour les distinguer.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Dim Tableau(3) As Integer ' Déclarer le tableau
Pour un tableau à 2 dimensions le premier argument représente les lignes, le second les colonnes.
Dim T(2,2) ' 3 X 3 éléments
T(1,1)=33 ' Pour mettre 33 dans l'élément central:
i = S.Split(Separateur) ' Découpe une string et la met en tableau
Erase Tableau ' Erase efface le tableau et récupère l'espace.
Array.Clear(t, 2, 3) ' Réinitialisation tableau t à partir de l'élément 1 et pour 3 éléments.
b = a 'Copie le tableau a dans b
Array.Clear(Mois,0,2) 'Efface 2 éléments du tableau Mois à partir de l'élément 0.
Array.Reverse(Mois, 1, 3) 'inverse les 3 éléments à partir de l'élément 1.
Array.Copy(Mois,1,Mois2,1,20) 'copie 20 éléments de Mois vers Mois2 à partir du 2eme élément.
Array.sort(Mois) 'Trie le tableau Mois
I=Array.BinarySearch(Mois, "Février") 'retourne I=1 se souvenir le premier élément est Mois(0)
Dim myIndex As Integer = Array.IndexOf(myArray, myString) 'retourne l'index de la première occurrence. Retourne -1 si l'élément n'est pas trouvé.
Dim Indice, MonTableau(10, 15, 20)
Indice = UBound(MonTableau, 1) ' Retourne 10. (1 indique la première dimension du tableau)
Indice = MonTableau.GetUpperBound(0) '( 0 pour première dimension!!) Retourne 10.
i = S.Length 'retourne un entier qui représente le nombre d'éléments total dans le tableau. |