On se retrouve pour ce 3ème tuto de A à Z pour parler des arguments d’événements.
En effet, les événements que vous utilisez (click, load, mouse_up, key_up, Navigate...) sont des fonctions:
elle reçoivent des paramètres (= des valeurs) d'entrées et peuvent en envoyer.
La chose qu'il faut comprendre s'est que vos événements se déclenchent en fonction des paramètres, par exemple, l'évènement
"Button_Click" se déclenche lorsque la souris est dans le bouton et que le bouton gauche est enfoncé, soit:
Ce qu'il faut également savoir, s'est que ces paramètres, nous pouvons les récupérer !
EXPERIENCE:
rassurez vous, on ne fera pas de TP de chimie noté ici (quoi que... ).
Vous avez, bien évidemment, ouvert SZ, créés un nouveau projet et verrouillé votre chambre (à triple tours )
Voici le design que vous devez concevoir:
Oui, en effet, il n'y a rien tout simplement parce que nous n'avons besoins de rien, à part de la fenêtre elle même
Nous allons d'abord commencé à prendre connaissance des arguments de l’événement click de la souris
(ben oui, en tant que programmateur je suis quelqu'un qui veut voir par lui même se qu'on veut lui faire apprendre )
Nous allons afficher nos arguments d'événements dans un message, pour cela on fait comme si s'était une fonction...
...et comment on affiche les arguments d'entrés d'une fonction?...en utilisant la p'tite flèche sur l'coté le glaude ! ...
il faut que je vous explique cette capture d'écran:
- e est le paramètre que reçoit l’événement (donc la fonction )(e comme: euh..... je fais quoi de ce que j'ai reçu? )
- sender est le paramètre que renvoi l’événement (mais lui on ne s'y intéresse pas )(sender = envoyeur)
ensuite:
Qu'est ce que j'ai fait ici? En fait, je n'ai pas créé de variable qui s'appelle e.ToString. En étant quelqu'un de prudent,
je convertit en texte le paramètre que reçoit l'évènement (en gros: je ne sais pas ce qui va se passer, mais comme
le message ne peut contenir que du texte, je convertit tout en texte )
Et hop ! testons:
(je précise que j'ai cliqué pour obtenir le message...)
WHAT? qu'est ce que s'est qu'se truc ?
S'est le type de l'argument, si vous préférez sa catégorie (texte, coordonnée, couleur, nombre, taille...).
En fait, votre programme vous affiche ça car vous lui avez précisé que vous ne vouliez que du texte, il a alors choisit l'information de ce paramètre
qui est de type texte soit le nom de son type.
On remarque donc que e est un paramètre de type System.Windows.Forms.MouseEventArgs.
Un peu d'analyse:
System.Windows.Forms: Tout ce qui se situe dans cette bibliothèque concerne le graphisme
MouseEventArgs: Argument des évènements qui concernent la souris
Ce type va nous permettre pleins de nouvelle chose. Le point positif s'est qu'il est simple à utiliser, par contre ce paramètre ne peut être récupéré que
dans certains événements qui utilisent la souris.
PRATIQUE:
Nous allons maintenant mettre en pratique notre observation.
Ajoutez un label à votre fenêtre, créez une variable qui va contenir les coordonnées de la souris
et assignez lui la valeur du paramètre de la souris (toujours dans le même événement, en ne supprimant rien)
(remarquez que j'ai entré e comme code vb.net, on ne cherche plus à obtenir son type )
Obtenons maintenant la coordonnées de là ou la souris clique:
si vous avez suivit tout à l'heure, sa reste simple: on obtient les cordonnées de la souris grâce au
paramètre d'entrée de la souris.
et on l'affiche dans un message (souris contenant des cordonnées, on le
convertit en texte, vous connaissez le principe ) ou dans le label (même principe).
Et maintenant vous tapez CTRL + ALT + SUPPR... et vous vous arrachez les cheveux si vous n'avez pas sauvegardé
(toujours, toujours, toujours... ).
Si vous exécutez, vous obtenez cela (le label ne sera pas aux cordonnées de la flèche !):
(ou vous obtiendrez le message, la flemme de faire 2 captures d'écrans )
ouais ! on y est arrivé !
Maintenant, on va faire en sorte que le label suive la souris, pour cela, copiez collez vos actions (sauf le message à supprimer)
dans un nouvel événement: MouseMove
Cet événement se déclenche quand la souris est dans le contrôle.
Nous allons donc modifier les cordonnées du label par celle de la souris et modifier sa valeur par les cordonnées de la souris:
et nous obtenons:
(remarquez que quand je dirige ma flèche vers la droite, le texte la suit de façon plus sacadé. Ceci s'explique par
le fait que ma flèche passe sur le textbox en allant à droite ce qui a pour effet de déclencher l'évènement
moins souvent )
C'est partit pour le faire avec le clavier:
(KeyUp correspond à l'appui d'une touche)
abracadabra touche appuyée !
Même blabla que tout à l'heure sauf KeyEventArgs concerne les paramètres envoyés par le clavier.
KeyValue correspond au numéro de la touche appuyé en valeur décimale, toute les valeurs sur la table ASCII:
(vous l'aurez certainement deviné: en cette fin de tuto j'ai plus du tout envie d'écrire )
Vous pouvez aussi faire afficher la valeur de la touche sur laquelle vous tapez avec un petit algo:
(cette fois ci, pas la peine de convertir: on a une simple valeur numérique à afficher)
Si vous lisez la table plus haut, vous saurez sur quelle touche j'ai appuyé
- REPONSE:
sur S
on peut concevoir un programme qui retient les cordonnées actuelle de la souris quand on appuie sur S
(comme SAUVEGARDER) et qui les restitues quand on appuie sur R (comme RESTITUER).
Pour cela, on crée une variable qui va recevoir les cordonnées actuelles.
et un petit algo (je ne l'explique pas comme il est très simple , à part que l'on modifie les cordonnées du label par la position
sauvegardé )
Et on obtient:
(La zone isolée permet que le texte reste vers l'endroit où on l'a sauvegardé car sans
cela, s'est l'évèenement de la flèche qui prend le dessus et le texte ne se déplace que
pendant un laps de temps très très court).
Merci de m'avoir lut et bonne nuit... euh... programmation !
Dernière édition par polien le Mar 24 Déc 2013 - 16:06, édité 2 fois (Raison : modification du titre)