Utilisateur anonyme
-
14 août 2017 à 15:51
Utilisateur anonyme -
25 août 2017 à 23:26
Bonjour , arriver à un passage d'un cour il explique qu'on va utiliser L'objet e mais il n'explique pas qu'est-que c'est, du coup je voulais savoir à quoi il sert,qu'est-que c'est ? merci
ex:
Sub WB_NAVIGATEUR_ProgressChanged(ByVal sender As Object, ByVal e As WebBrowserProgressChangedEventArgs) Handles WB_NAVIGATEUR.ProgressChanged Me.PGB_STATUT.Maximum = e.MaximumProgress Me.PGB_STATUT.Value = e.CurrentProgress End Sub
e est une variable.
Microsoft a une signature par défaut pour tous ses évènements, sender du type Object et e d'un type dérivé d'EventArgs.
Sender c'est l'objet qui génère l'événement et e selon son type contient des informations supplémentaire.
Si l'événement est douleur, que sender est toi, e pourrait contenir la localisation et l'intensité de la douleur.
Dans l'exemple que tu montres e est du type WebBrowserProgressChangedEventArgs est MSDN regorge d'informations sur ce type.
Je ne vais pas batailler une fois de plus pendant 200 messages avec toi.
Je t'ai posé une question, j'attends une réponse, que ce soit "Rien" ou "Quelque chose".
j'ai posé deux questions et j'attends toujours les réponses...
et d'après ton explication "Sender c'est l'objet qui génère l'événement"
soit c'est l'objet Sender qui génère l'événement (click,load etc...) ou l'objet "Bouton" par exemple qui est contenu dans Sender , dans ton explication je vois que ça...
Private Sub SelectBlanc_Click(sender As Object, e As EventArgs) Handles SelectBlanc.Click
-
Private Sub
indique que c'est un procédure sub privée à la classe courante ( ici une Form)
-
SelectBlanc_Click
est le nom de la procédure . Comme cette procédure est générée automatiquement par Visual Studio elle porte come nom le nom du contrôle qui le génère avec l'évènement généré . Dans le cas présent SelectBlanc est une PictureBox et l'évènement est un Click. On peut changer le nom de la procédure ensuite ( exemple ChoixBlanc par exemple au lieu de SelectBlanc_Click.
-
sender As Object
: Sender est le contrôle ( et donc l'objet) qui génère l'évènement . Dans ce cas Sender = SelectBlanc
-
e As EventArgs
: e permet d'avoir des informations supplémentaires. Ces informations dépendent du type de contrôle qui a généré l'évènement . Dans le cas d'une Picturebox e.X donne la coordonnée horizontale du point cliqué dans la Picturebox et e.Y donne la coordonnée verticale de ce même point par exemple
-
Handles
: mot clé pour associer les évènements à la procédure
-
SelectBlanc.Click
contrôle et évènement associés à la procéduret
Maintenant pourquoi mettre
Sender as Object
?
Prenons l'exemple avec 3 Textbox sur une Form . Lorsque l'on clique sur une TextBox on veut effacer son contenu
On peut faire 3 procédures avec l'évènement associé
Private Sub TextBox1_Click1(ByVal sender As Object, ByVal e As EventArgs) Handles Textbox1.Click TextBox1.text = String.empty ' chaine de caractères vide End Sub Private Sub TextBox2_Click1(ByVal sender As Object, ByVal e As EventArgs) Handles Textbox2.Click TextBox2.text = String.empty ' chaine de caractères vide End Sub Private Sub TextBox3_Click1(ByVal sender As Object, ByVal e As EventArgs) Handles Textbox3.Click TextBox3.text = String.empty ' chaine de caractères vide End Sub
C'est bête d'utiliser le même code 3 fois . On va donc associer les 3 évènements à une seuls procédure . Le mot clé
Handles
associe les 3 évènements Click à une seule procédure . Mais quand tu cliques sur une TextBox il faut savoir laquelle pour le code : c'est là que Sender rentre en jeu car Sender se rapporte à la Textbox qui a été cliqué et ainsi les 3 évènements sont regroupés sous une seule procédure
Private Sub TextBox1_Click1(ByVal sender As Object, ByVal e As EventArgs) Handles Textbox1.Click,TextBox2.Click,TextBox3.Click DirectCast(sender, TextBox).Text = String.empty ' chaine de caractères vide End Sub
DirectCast permet de transformer sender en un nom de contrôle valide
Si ceci n'est pas clair pour toi c'est dommage ! Et à ce niveau tu n'as pas à en savoir plus pour l'instant !
Ce sera ma seule intervention !
vu que Sender est du Type Object on peux faire pleins de choses à l'objet du coup ?
Cette question est totalement inutile ! Je t'ai largement expliquer le rôle de Sender en cas de plusieurs évènements similaires de contrôles différents associés à la procédure !
fin de l'échange pour moi !
Je te mets sur la voie
Si c'est pour un click d'un label Sender serait pour un label
Si c'est pour un click d'une textbox Sender serait pour une textbox
Si c'est pour un click d'une picturebox Sender serait pour une picturebox
Si c'est pour un click d'une form Sender serait pour une form
Si c'est pour un tick d'un timer Sender serait pour un timer
Si c'est pour un KeyPress d'une TestBox Sender serait pour une textbox
Maintenant un label, une textbox, une picturebox, une form, etc.. ce sont quoi ?
Ce sont tous des ..............
Si si c'est la classe Object !
Je viens de me rendre compte de l'ambigüité de ma réponse..
Le "C'est ça" était pour le fait que ce sont tous des objets que j'ai énumérés dans le message 18 .
Et Sender est bien de type Object
tout ce que j'ai compris c'est que Sender sert quand il y a plusieurs événements , mais pourquoi le type Object , ce que Sender contient concrètement bref tout ça tout ça...
cà parce-qu'il regroupe toute le hiérarchie des classes c'est bon
Cà et qu'il permet de stocker l'objet du coup ce n'est pas bon !
Il faut comprendre que
Sender as Object
permet de se référer à n'importe quel objet . Il ne stocke rien .
Prenons par analogie les animaux --> la classe Object
Les mammifères sont des animaux
les félins sont des mammifères
les chats sont des félins
les siamois sont une race de chat ' là cela peut-être la textbox par exemple
Conclusion : les chats siamois sont des animaux mais tous les animaux ne sont pas des chats siamois .
laTextbox est un objet mais tous les objets ne sont pas des TextBox
voici la hiérarchie des classes pour une Textbox
System.Object ' là c'est la classe Objectl ( c'est la classe de base)
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.TextBoxBase
System.Windows.Forms.TextBox ' la c'est la classe TextBox
Si c'est un chat qui miaule Sender se réfère au chat
Si c'est un chien qui aboie Sender se réfère au chien
Si c'est un oiseau qui siffle Sender se réfère à l'oiseau
Mais Sender reste un animal
Transpose avec les objets informatiques et fais marcher tes neurones !
jvois ce que tu veux dire , au-lieu de mettre Sender as Texbox on met Object pour pouvoir référer les différents contrôles ? car Object est la classe de base pour tous ?
Avec VB95, nous sommes les 2 seuls à se prendre encore la tête avec toi.
Tu ne veux pas comprendre, tu n'acceptes ni les explications, ni les exemples que l'on te donne, ni les tentatives de te faire réfléchir par toi même.
Chacune des tes questions, pour la majorité des gens qui se sortent un peu les doigts du c*l, ne prendraient que 2 ou 3 interventions.
Avec toi ça prends 100 message et y'a toujours un moment ou tu nous sors une réplique comme celle là
si tu m'avais déjà répondu normalement sans répondre par une autre question ça aurait été déjà fini au-lieu de parler pour rien faire ...)
ET ben tu sais quoi, je ne parlerai plus pour rien.
19 août 2017 à 13:47
21 août 2017 à 13:56