La propriété tag

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 478 fois - Téléchargée 36 fois

Contenu du snippet

peut de monde utilise cette propriété, pourtant elle est extrêment utile, surtout en .Net dans un environnement dynamique (genre un tableau de control créé par du code). Comme je veisn de le dire, elle se trouve dans n'imoprte quel control (label, button, listbox, ..., même les activeX, puisque la propriété Tag viens directement de Object, qui est à la base de tout les object graphique)

cette varaible est en fait n'importe quoi. Elle est pas utile au object, mais elle sert à l'utilisateur. Elle est du type Object ou aussi connu Variant sous VB6.0, donc ça peut-être un entier, un string, une date, ....

l'utilité première de cette propriété est de garder en mémoire des informations (clé dasn une base de donnée, position dans un tableau, des valeur important pour faire des requête, etc ....)

la raison de cette astuce est justement de faire connaitre ses possibilités.

sauf que très souvent, une seule valeur est pas assez, la propriété Tag peut-être redimentionner comme on le veux, soit par un redim ou un redim preserve, pour conserver ses données intactes.

Voici un exemple de son utilisation. La propriété va concerver sa position dans un tableau et un id pour une requête qui pourra être faite plus tard. Ceci est un bout de code, mais c'est assez pour bien comprend l'utilité de Tag

Source / Exemple :


For i = 0 To UBound(choix)
            Me.checkBox1(i) = New System.Windows.Forms.CheckBox

            Me.checkBox1(i).Location = New System.Drawing.Point(10, 30 + i * 20)
            Me.checkBox1(i).Size = New System.Drawing.Size(200, 20)
            Me.checkBox1(i).Text = choix(i).un
            Me.checkBox1(i).Checked = CBool(choix(i).Quatre)
            ReDim Me.checkBox1(i).Tag(1)
            Me.checkBox1(i).Tag(0) = i
            Me.checkBox1(i).Tag(1) = choix(i).Cinq
            Me.GroupBox1.Controls.Add(Me.checkBox1(i))
            AddHandler checkBox1(i).CheckedChanged, New EventHandler(AddressOf checked)
next i

'Et dans la fonction checked, ça va donner ceci
'l'index quiest stocker dans TAG(0) va servir a mettre d'autre composant visible ou non

    Private Sub checked(ByVal sender As System.Object, ByVal e As System.EventArgs)
        debut(sender.tag(0)).Visible = sender.checked
        fin(sender.tag(0)).Visible = sender.checked
        de(sender.tag(0)).Visible = sender.checked
        a(sender.tag(0)).Visible = sender.checked
    End Sub

'Et dans une autre fonction, je pourrais utiliser l'id qui se trouve dans tag(1)
basedonnee.ouvertureRST("insert into table values(" & sender.tag(1) & ",'" & de(sender.tag(0)).text & "')")

Conclusion :


en gros les utilités sont infini
c'est seulement inconnu de la plus par du monde, amis extrêment pratique dans certain code

comme je l'ai dit, je m'en sert surtout pour stocker en mémoire des ID et des positions dans des environnements dynamiques.

c'est sur si vous créer votre propre control, mieux vaut faire vos propre viraible, mais pour les control déjà existant, (surtout les boutons ou autre control qui déclenche un évênement) c'est extrêment pratique et ça évite très souvent de faire u tableau en parallèle pour storer les informations

A voir également

Ajouter un commentaire Commentaires
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
5
BadoqueAlex est ce que tu lis les commentaire, j'ai dit la même chose que toi 2 commentaire au dessus. La source date de 2004.
Messages postés
129
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2009

N'importe quoi cet exemple ... L'utilité d'un tag aurait été de créer une classe contenant des informations puis de dire :

sender.tag = new ClassData

Et puis TAG permet également de lier des controles. Essayez :

Dim MonCtrl as new Label
Button1.tag = MonCtrl

Button1.tag.text = "Test"
msgbox(button1.text)

et comme par miracle, il nous donne "Test" ... bref voila quoi. Mais gaspiller un TAG en y mettant un tableau ... pff autant lier un avec un PropertyGrid aussi ... -_-"

5/10
Messages postés
2
Date d'inscription
jeudi 21 septembre 2006
Statut
Membre
Dernière intervention
11 novembre 2007

je confirme 10/10
merci, tu m'as été d'un grand secour, je crée dynamiquement des boutons qui renvoient justement des données et jusque là j'ai été contraint au système D

cette propriété très utile est malheureusement mal documentée
encore une fois bravo
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
5
mais quand même idéallement est de passer une class par la propriété TAg ou encore mieux fabriquer un objet en orienté objet. Mais TAG sert souvent de raccourcie de code, quand on est trop paresseux pour faire une class
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
un 9 et deux 10....
Afficher les 18 commentaires

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.