Utilite de Me

ricouth Messages postés 25 Date d'inscription mardi 18 août 2009 Statut Membre Dernière intervention 13 novembre 2012 - 1 août 2010 à 13:38
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 - 1 août 2010 à 14:47
Bonjour

Voila plusieurs fois que je vois l'utilisation de Me devant des instruction
par exemple
Me.ComboBox1.visible=True
ou
Me.Texte1.value=""

Je désireria savoir quelle est l'utilitée de ce Me

merci d'avance

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 août 2010 à 13:57
Me désigne l'instance en cours de la classe de base où se trouve le code en question.

Dans la majorité des cas ou tu rencontrera cette instruction, Me désignera l'instance en cours d'utilisation de la Form contenant ce code.

Pour un contrôle ComboBox1 poser sur la Form1, dans le code de la Form1, tu fais référence au combo en utilisant Me.ComboBox1
(Il va de soit que ce code étant exécuté, une instance de Form1 existe déjà en mémoire, Me désignant cette instance)
Me remplace Form1 pour tout le code situé dans Form1

Depuis une autre form ou un module, tu devrais écrire Form1.ComboBox1 (Ce qui aurait pour conséquence si il n'existe pas d'instance de Form1 en mémoire d'en créer automatique une nouvelle auparavant, ou dit autrement, d'ouvrir ton écran Form1 avant d'accéder à son contrôle ComboBox1)

Pas certain d'avoir été très clair


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
1 août 2010 à 13:58
Bonjour,

Me perment de faire référence à la classe courante. Par exemple si votre classe contient une sub Public Sub Toto(), on poura y faire appelle au sein de la classe en faisant Me.Toto()
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
1 août 2010 à 14:15
@casy> Tu as été plus précis que moi

Je rajouterai juste que pouvoir écrir "ComboBox1.visible True" au lieu de "Me.ComboBox1.visible True" est, d'une certaine facon, une des faiblesses de la flexibilité du language, qui, du coup, le rend ambigu sur ce genre de point.

Un peut comme le fait de pouvoir faire :
Dim i as Long
Dim s as String = "A" & i

'Au lieu de 
Dim i as Long
Dim s as String = "A" & i.ToString()


Et il existe bien d'autres exemples.

Donc c'est au programmeur de rester homogène dans ca facon d'écrir.

(Le deuxième exemple donné peut être interdit en passant l'option Strict à On dans les proprétés du projet, Onglet Compiler. Ce que je conseille)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 août 2010 à 14:24
Ne pas confondre VB6 (rubrique du post) et VB.Net, qui a, lui, un comportement parfois légèrement différent, souvent plus strict que VB6

La définition de Me est valable pour les deux.

Quant à pouvoir écrire ComboBox1.visible au lieu de Me.ComboBox1.visible, c'est possible en VB6. En VB.Net normalement si le Me est oublié il est automatiquement rajouter par l'IDE.

Quant aux exemple que tu donne, foliv57, ils sont en VB.Net (ToString n'existe pas en VB6) et c'est le premier qui peut être interdit avec Option Strict ON et non pas le second qui est, lui, l'écriture "propre" de l'instruction.

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
1 août 2010 à 14:47
Toutes mes excuses, je n'ai pas fait attention au VB6.

Quand je parlais de 2ème exemple, je ne paralai de la 2ème facon d'écrir mais bien du fait de pouvoir affecter un string à un long. (redésolé sur ce point de na pas avoir été plus clair). Et ce problème existe aussi en VB6. Que je vais réecrir dans le bon language.

Dim i as Long
Dim s as String
s = "A" & i

'Au lieu de 
Dim i as Long
Dim s as String 
s = "A" & CStr(i)
0
Rejoignez-nous