Tableau de contrôles en VB .NET [Résolu]

chewbaka62 67 Messages postés mardi 1 novembre 2005Date d'inscription 30 juillet 2006 Dernière intervention - 26 mai 2006 à 14:29 - Dernière réponse : chewbaka62 67 Messages postés mardi 1 novembre 2005Date d'inscription 30 juillet 2006 Dernière intervention
- 29 mai 2006 à 08:47
Je cherche à déclarer des tableaux de contrôles en VB .NET mais je n'y arrive pas, alors qu'avec VB 6.0, on pouvait le faire en utilisant des groupes de contrôles et les gérer via leur propriété Index. Quand je met " Dim etiquette(10) as new Label, il ne l'accepte pas. Existe -t'il un moyen ou une astuce?
Merci d'avance.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
cs_vpoyo 363 Messages postés vendredi 14 février 2003Date d'inscription 20 avril 2010 Dernière intervention - 29 mai 2006 à 00:07
3
Merci
si tu utilises la propriété Controls du container parent (un panel par
exemple) ca revient à écrire ce qu'a fait visualresine sauf que tu
auras mon_pane.Controls.add(mon_new_label) et quand tu veux faire un
trairement sur les labels ben faut récupérer le bon label pour celà
faut aller le chercher et tu fais un

for each mon_control in mon_panel.Controls

    blablabla

next

attention contrairement au code de visualresine tu récupéreras des
objet de type control qu'il faudra caster en label si tu veux voir les
propriétés dans l'éditeur (autocompletion)


sinon comme je disais tu peux utiliser un hashtable ou un arraylist.
l'arraylist revient toujours au même code que visualresine la
différence vient du fait que tu n'as pas a spécifier un nombre
d'élément pour le tableau donc tu n'est pas limité par un max et tu
n'as pas a gérer des cases du tableau vide de plus tu n'as pas a gérer
l'accroissement (ou la diminution) de la taille de ton arraylist quand
tu lui ajoutes un élément par contre tes objets seronts casté en Object
donc il faudra les caster en Label pour les utiliser (ctype()) et
l'arraylist est un peu moins rapide qu'un tableau (mais bon tu verras
pas beaucoup la différence). la hashtable est comme l'arraylist sauf
que l'indice du tableau est l'objet que tu veux. tu peux donc mettre en
clé le nom du label. l'avantage ici est que lorsque tu sais quel
élément tu veux manipuler (tu connais son nom) tu n'as pas a boucler
sur un tableau, arraylist, ou propriété Controls, il suffit juste de
faire un ma_hashtable("label_numero_trois")

(dans ce cas ca veut dire que tu avais fait avant un mon_label.name = "label_numero_trois")


quelque soit la méthode que tu utilises les algos sont toujours pareil (a quelques tout petits détails prêt)

pour créer un label tu fais

       dim l_label as Label = new Label()

       'ensuite tu fixes les propriétés qui vont bien

     

        'on ajoute le label au container graphique

       mon_container.add(l_label) 'ce container peut être une form, un panel, ....

       'si tu utilises un array, arraylist ou hashtable

       'il faut ajouter ici le code pour le mettre dans ta structure


généralement ce code là ce trouve dans une boucle (for each, for i,
while) par rapport à un indice, ou un ensemble d'élément recordset par
exemple.


quand tu veux rechercher un label  plus loin dans le code tu dois
connaitre une des propriétés voulu, comme je te disais ca peut être son
nom (Name), sa valeur (Text), un objet associé (Tag) voir sa position à
l'écran (Top & Left).

les boucles c'est toujours pareil :

       for each element in structure

          if element.maPropriété = propriete_souhaitée then

             traitement()

             exit for

          end if

       next


attention toujours au cast des objets, et la hashtable te permet d'éviter ces boucles pour chercher un élment.


en espérant que celà t'aide


(tain j'ai jamais fait un poste aussi long :-)

Merci cs_vpoyo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_vpoyo
cs_vpoyo 363 Messages postés vendredi 14 février 2003Date d'inscription 20 avril 2010 Dernière intervention - 26 mai 2006 à 14:41
0
Merci
Le mieux reste de les grouper dans un container.
ensuite pour les récupérer il faut boucler sur la propriété Controls du container et de réussir à identifier celui qui t'intéresse. ca peut être la valeur (propriété Text), une donnée (comme la propriété Tag) ou le nom. pour ce dernier ca veut dire que tu as pensé à tous les appelés, par exemple, monLabel_XX. en récupérant la partie après le caractère _ tu connais son numéro identifiant
Commenter la réponse de cs_vpoyo
cs_yvesyves 562 Messages postés samedi 10 janvier 2004Date d'inscription 11 octobre 2010 Dernière intervention - 26 mai 2006 à 15:00
0
Merci
Les groupes de controles n'existent plus en vb.net.... Fais ce que vpoyo dit c'est une des seule solution....
Commenter la réponse de cs_yvesyves
VBSorcier 102 Messages postés jeudi 31 mars 2005Date d'inscription 29 avril 2007 Dernière intervention - 26 mai 2006 à 15:13
0
Merci
essaye ça : 

Dim etiket As New List(Of Label)    'Creation du "tableau de label"



Dim label1 As New Label           'Creation d'un nouveau Label
label1.Text = "Test1"             'son Text
label1.Name = "Label1"            'son Nom



etiket.Add(label1)  'Ajout du label créé précédement dans le "tableau de label"



Dim label2 As New Label            'Creation d'un nouveau Label
label2.Text = "Test2"              'son Text
label2.Name = "Label2"             'son Nom



etiket.Add(label2)  'Ajout du label créé précédement dans le "tableau de label"





'Listage des "Text" des labels présent dans le tableau
Dim i
For i = 0 To etiket.Count - 1
    MsgBox(etiket(i).Text)
Next


a+
VBSorcier
Commenter la réponse de VBSorcier
VBSorcier 102 Messages postés jeudi 31 mars 2005Date d'inscription 29 avril 2007 Dernière intervention - 26 mai 2006 à 15:14
0
Merci
par contre c'est en .net2 (VB2005) !!!!
Commenter la réponse de VBSorcier
cs_vpoyo 363 Messages postés vendredi 14 février 2003Date d'inscription 20 avril 2010 Dernière intervention - 26 mai 2006 à 15:22
0
Merci
ben on peut toujours simuler ce comportement en .net1.1 avec un arrayList ou une HashTable. mais bon en fait on ne fait que dédoubler la collection Controls tu container parent.
Commenter la réponse de cs_vpoyo
chewbaka62 67 Messages postés mardi 1 novembre 2005Date d'inscription 30 juillet 2006 Dernière intervention - 26 mai 2006 à 21:50
0
Merci
Merci vpoyo pour ta réponse mais concrètement, je ne vois pas comment faire. Peux-tu donner un petit exemple?
Merci d'avance.
Commenter la réponse de chewbaka62
visualresine 46 Messages postés vendredi 23 septembre 2005Date d'inscription 31 janvier 2008 Dernière intervention - 28 mai 2006 à 19:46
0
Merci
voici une solution pour avoir un tableau de label (solution developpé par Charly)


 Private tab_lab_1(30) As Label


Me.tab_lab_1(i) = New Label

Me.TabPage1.Controls.Add(Me.tab_lab_1(i))


Me.tab_lab_1(i).Location = New Point(5, 90)

Me.tab_lab_1(i).Size = New Size(67, 15)

Me.tab_lab_1(i).Text = Me.tab_heure_1(i, 0)

Me.tab_lab_1(i).Show()
Commenter la réponse de visualresine
chewbaka62 67 Messages postés mardi 1 novembre 2005Date d'inscription 30 juillet 2006 Dernière intervention - 29 mai 2006 à 08:47
0
Merci
Merci Vpoyo, cette fois-ci c'est clair et merci pour ton (long mais précis ) post. Entretemps, j'avais trouvé une autre solution en utilisant la notion de collection des contrôles dans son container.
Ex: control.item(index).text et boucler sur l'index. Ca marche très bien
Merci encore une fois.
Commenter la réponse de chewbaka62

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.