1 Les menus et vnements
14/09/08
Les menus et vnements
Sommaire
1 Introduction ..................................................................................................................................... 2
2 Grer les ToolStrips ......................................................................................................................... 2
2.1 Prsentation du ToolStrip ...................................................................................................... 2
2.2 Ajouter des lments dans votre ToolStrip en utilisant linterface utilisateur ou le code de
programmation ................................................................................................................................... 4
2.3 Les diffrents lments composant le ToolStrip .................................................................... 6
2.4 Grer les images dans un ToolStrip ........................................................................................ 7
2.5 Le container ToolStripContainer ............................................................................................ 7
2.6 La fusion de ToolStrip ............................................................................................................. 7
3 Configurer et crer des menus ........................................................................................................ 8
3.1 Prsentation du contrle MenuStrip ..................................................................................... 8
3.2 Concevoir et grer des MenuStrips et des ToolStripMenuItem ........................................... 10
3.3 Le contrle ContextMenuStrip ............................................................................................. 18
4 Grer les vnements et utiliser le Event Handlers ...................................................................... 22
4.1 Les vnements en gnral ................................................................................................. 22
4.2 Crer un gestionnaire dvnements (Event Handlers) la conception ............................. 24
4.3 Crer un vnement pour un contrle ................................................................................ 25
4.4 Grer les vnements au clavier et la souris .................................................................... 25
4.5 Charger des mthodes avec le Code Editor ......................................................................... 27
5 Conclusion ..................................................................................................................................... 28
2 Les menus et vnements
14/09/08
1 Introduction
Dans ce quatrime chapitre, vous dcouvrirez deux contrles (ToolStrip et MenuStrip) qui
savrent importants dans la cration dun programme en Windows Form. Vous apprendrez aussi
grer les vnements et utiliser les Events Handler.
Bon cours .Net
Lquipe Windows Form
2 Grer les ToolStrips
2.1 Prsentation du ToolStrip
Le ToolStrip est un nouveau contrle cr pour .NET Framework 2.0. Il permet de configurer
facilement des ToolBars qui ont lapparence des barres doutils de Microsoft Internet Explorer ou
encore Microsoft office et dallure professionnel. Il permet dutiliser les ToolStripItems (lments du
contrle) qui fournissent une grande varit de fonctionnalit.
3 Les menus et vnements
14/09/08
Voici les principales proprits dun ToolStrip :
Types de Proprits Description
AllowItemReorder Permet dindiquer si les Item peuvent tre
rorganiss par lutilisateur. Si sa valeur est True
lutilisateur peut dplacer les Item en
maintenant la touche Alt.
AllowMerge Permet dindiquer si votre ToolStrip peut se
fusionner avec un autre ToolStrip.
CanOverFlow Permet de dfinir si lutilisateur peut mettre des
Item sous des menus droulant.
Dock Permet dindiquer o est le ToolStrip. En effet il
est mieux de mettre le ToolStrip sur un bord de
votre Formulaire.
IsDropDown Indique si le ToolStrip est un contrle
ToolStripDropDown.
LayoutStyle Permet de dfinir lemplacement des lments
dans votre ToolStrip, par exemple les classer
verticalement ou horizontalement.
RenderMode Permet de dfinir un style visuel de design, par
exemple, un style professionnel ou systme.
ResizeRedraw Indique si le ToolStrip se redessine lors dun
redimensionnement.
ShowItemToolTips Permet de dfinir si les lments du ToolStrip
peuvent afficher des infos bulle.
Stretch Permet de dfinir si le ToolStrip prend toute la
longueur du ToolStripContainer.
TextDirection Permet dindiquer la direction du texte dans vos
lments de votre ToolStrip. Par exemple, vous
pouvez mettre votre texte verticalement.
VScroll Dfinit une valeur pour quune barre de
dfilement verticale saffiche.
4 Les menus et vnements
14/09/08
2.2 Ajouter des lments dans votre ToolStrip en utilisant linterface utilisateur ou le code de programmation
Au moment de la conception de votre ToolStrip, vous avez deux faons dajouter des lments :
Soit en cliquant sur le petit onglet ToolStrip Tasks puis Edit Items :
Soit directement avec un onglet qui saffiche lorsque que le ToolStrip est slectionn :
Vous pouvez aussi ajouter ces lments directement dans le code, par exemple, vous pouvez ajouter
un bouton Nouveau lment :
VB
Public Sub New()
InitializeComponent()
Dim nouveauElement As ToolStripItem
nouveauElement = toolStripTest.Items.Add("Nouveau lment")
End Sub
5 Les menus et vnements
14/09/08
//C#
public Form1()
{
InitializeComponent();
ToolStripItem nouveauElement;
nouveauElement = toolStripTest.Items.Add("Nouveau lment");
}
Ce qui donne :
Remarque : Implmenter votre code dans la classe de votre Formulaire aprs
InitializeComponent ( ) ; , afin que votre lment soit ajout dans votre contrle.
6 Les menus et vnements
14/09/08
2.3 Les diffrents lments composant le ToolStrip
Le ToolStrip a t cr dans le but daccueillir plusieurs lments dj existant hors ToolStrip
comme par exemple des boutons. Certains contrles sont par contre spcifiques au ToolStrip. Voici
les lments dun ToolStrip :
Types dlments Description
ToolStripLabel La particularit de cet lment est quil peut tre
la fois un Label mais aussi un LinkLabel. Il suffit
de changer la proprit de IsLink pour avoir lun
des deux.
ToolStripButton Il sagit dun bouton comme un Button normal. A
la base il est juste reprsent par une image
mais il est configurable. Vous pouvez associer
une icne avec un texte, etc
ToolStripSeparator Il sagit dun lment particulier, il permet
surtout de mettre une sorte de barre
permettant de sparer visuellement nos
lments.
ToolStripComboBox Cet lment fonctionne comme une ComboBox
classique.
ToolStriptextBox Cet lment est identique une TextBox
classique. En revanche il est impossible dutiliser
la proprit Multiline.
ToolStripProgressBar Cet lment est similaire une ProgressBar. Il
est par exemple possible de dfinir son style
avec un avancement en blocs ou en continue.
ToolStripDropDownButton Cet lment permet douvrir un menu droulant
lorsque que lutilisateur clique sur licne ou la
flche droite.
ToolStripSplitButton Cet lment fonctionne comme le
ToolStripDropButton, c'est--dire quil permet
douvrir un menu droulant. Mais lutilisateur
peut en revanche cliquer sur licne pour une
autre action. C'est--dire que pour ouvrir le
menu droulant, il faut cliquer sur la flche.
7 Les menus et vnements
14/09/08
2.4 Grer les images dans un ToolStrip
Les lments ToolStripButton, ToolStripDropDownButton et ToolStripSplitButton peuvent tre
personnaliss par des images et/ou texte.
Voici les proprits principales pour grer les images et textes :
Types de Proprits Description
DisplayStyle Permet de dfinir si le contrle affiche du texte,
une image ou les deux.
Image Permet dassocier une image au contrle.
ImageAlign Permet de dfinir comment limage est place
sur le contrle.
ImageScaling Permet de dfinir si limage sera redimensionne
pour tre adapte au contrle.
ImageTransparentColor Permet de dfinir la couleur de fond lorsque
limage (ou une partie) est transparente.
2.5 Le container ToolStripContainer
Le ToolStripContainer est une classe permettant de contenir un ou plusieurs ToolStrip. De plus,
avec cette option, lutilisateur du logiciel pourra dplacer librement son/ses ToolStrip sur tous les
bords de la Form.
Vous pouvez dfinir quels bords seront disponibles pour lutilisateur avec les proprits (Top ou
Right/Left/Bottom)ToolStripPanelVisible.
2.6 La fusion de ToolStrip
Les ToolStrip peuvent tre fusionns lors de lexcution de votre logiciel avec la mthode
ToolStripManager.Merge.
Lorsque des ToolStrip sont fusionns, chaque lment des ToolStrip sources est compar avec
chaque lment des ToolStrip viss. Pour pouvoir fusionner correctement vos ToolStrip, la proprit
AllowMerge doit tre sur True.
8 Les menus et vnements
14/09/08
3 Configurer et crer des menus
3.1 Prsentation du contrle MenuStrip
Le contrle MenuStrip est un regroupage de commandes qui les rend plus accessible et qui
est optimis pour laffichage de ToolStripMenuItems. Les ToolStripMenuItems sont des contrles qui
permettent une meilleure visualisation dans les menus. Ils peuvent tre sous une ou plusieurs formes
(texte ou image). Ainsi grce au MenuStrip vous pourrez crer un menu dlments pour votre
programme.
Remarque : Un MenuStrip est le menu que lon retrouve dans pratiquement tous les programmes
tels que Microsoft Word ou encore Adobe.
Les proprits importantes du contrle MenuStrip sont affiches ci-dessous :
Proprits Description
AllowItemReoder
Permet dindiquer si les Item qui peuvent tre
rorganiss par lutilisateur. Si sa valeur est True
lutilisateur peut dplacer les Item en
maintenant la touche Alt.
AllowMerge Indique si le MenuStrip peut tre fusionn avec
un autre MenuStrip.
Dock
Dtermine quelles bordures sera associ le
contrle ainsi que le redimensionnement avec le
contrle parent (ex : la Form).
LayoutStyle Dfinit selon des valeurs comment les lments
du contrle MenuStrip seront disposs.
RenderMode
Indique le style de peinture du contrle appliqu
au MenuStrip (System pour un style basique du
systme, Professional pour une apparence
ressemblant lOffice de Microsoft, et
ManagerRenderMode pour un style de base de
Visual Studio).
ShowItemToolTips Dfinit si les ToolStripItems du contrle
MenuStrip ont des info-bulles.
Strech Dfinit une valeur si le MenuStrip stend dun
bout lautre de son container (Form, Panel)
TextDirection Indique la direction du texte dans les contrles
accueillant des MenuStrip.
9 Les menus et vnements
14/09/08
Bien sr nous pouvons remarquer une grande similitude entre les proprits du contrle MenuStrip
et du contrle ToolStrip car le MenuStrip drive du ToolStrip.
Ensuite nous avons ToolStripMenusItems qui fonctionne avec le contrle MenuStrip et voici ses
principales proprits :
Proprits Description
AutoSize Dtermine si le menu dlment redimensionne
automatiquement le texte.
Checked Dfinit si le ToolStripMenuItems apparat comme
tant activ (checked).
CheckOnClick
Dtermine une valeur pour indiquer si le
ToolStripMenuItems doit apparatre
automatiquement activ ou dsactiv lorsque
lutilisateur clique dessus.
CheckState
Dfinit dans quel tat se trouve initialement le
ToolStripMenuItems (activ, dsactiv ou
indtermin).
DisplayStyle Indique si le(s) texte(s) et/ou le(s) image(s) sont
affich(e)(s) dans le ToolStripMenuItems.
DoubleClickEnabled Indique si le ToolStripMenuItems peut tre
activ grce au double clic de la souris.
DropDownItems
Obtient la collection dlment dans
ToolStripDropDown auquel la proprit
DropDown fait rfrence.
Enable Dtermine si le contrle est activ.
Image Indique limage dfinit dans le ToolStripItem.
MergeAction Dtermine les actions prises lorsque les menus
enfants sont fusionns avec les menus parents.
MergeIndex Dfinit la position des lments aprs que les
menus ont fusionn.
ShortcuKeyDisplayString Indique le texte associ la touche de raccourci.
ShortcutKeys Dtermine la touche de raccourci lie au
ToolStripMenuItem.
ShowShortcutKeys Dtermine si les touches raccourcis associe aux
ToolStripMenuItems sont affiches cot de ces
10 Les menus et vnements
14/09/08
mme ToolStripMenuItem.
Text Indique le texte qui sera affich dans llment.
TextImageRelation
Dfinit la position du texte et de limage du
ToolStripMenuItem par rapport lun et lautre,
lorsque la proprit DisplayStyle est dfinie sur
ImageAndText.
3.2 Concevoir et grer des MenuStrips et des ToolStripMenuItem
La cration du contrle MenuStrip se fait de la mme faon que tous les autres
contrles : dans la partie design vous faites glisser votre contrle dans votre Formulaire
depuis la Toolbox. Ensuite vous pouvez ajouter des lments en cliquant sur votre
contrle puis en renommant votre lment et/ou en choisissant son type (MenuItem,
ComboBox). Si vous renommez votre lment sans choisir votre type dlment, il sera
alors par dfaut un MenuItem.
Ici nous choisissons le type dlment que nous voulons insrer dans le contrle.
11 Les menus et vnements
14/09/08
Ici nous renommons directement llment en double-cliquant sur son emplacement, nous
obtiendrons ainsi par dfaut un MenuItem.
Remarque : Par dfaut le nom des lments ajout sera du type
nom_de_votre_lmentToolStripMenuItem ou encore ToolStripComboBox1.
Vous ajoutez tout dabord votre MenuStrip (ici le nom de rfrence du contrle est MenuStrip1) puis
vous insrez vos lments comme dans le code suivant :
VB
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Nous crons un nouvel lment MenuItem appel "Fichier"
Dim FichierToolStripMenuItem As New ToolStripMenuItem("Fichier")
'puis nous lajoutons dans le contrle MenuStrip
MenuStripTest.Items.Add(FichierToolStripMenuItem)
End Sub
12 Les menus et vnements
14/09/08
//C#
private void Form1_Load(object sender, EventArgs e)
{
// Nous crons un nouvel lment MenuItem appel "Fichier"
ToolStripMenuItem FichierToolStripMenuItem = new
ToolStripMenuItem("Fichier");
//puis nous lajoutons dans le contrle MenuStrip
menuStripTest.Items.Add(FichierToolStripMenuItem);
}
Ensuite vous pouvez amliorer votre MenuStrip depuis ses proprits, par linterface de
lutilisateur ou encore depuis sa partie code. Ci-dessous vous retrouverez diffrents
exemple damliorations de votre contrle :
Le sparateur
Interface utilisateur :
13 Les menus et vnements
14/09/08
Code :
VB
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
nous crons un nouveau sparateur
Dim Separateur As New ToolStripSeparator
puis nous l'insrons dans le contrle aprs le premier lment de celui-
ci
MenuStripTest.Items.Insert(2, aSeparator)
End Sub
//C#
private void Form1_Load(object sender, EventArgs e)
{
// nous crons un nouveau sparateur
ToolStripSeparator Separateur = new ToolStripSeparator();
//puis nous l'insrons dans le contrle aprs le premier lment de celui-
ci
menuStripTest.Items.Insert(2, aSeparator);
}
Dsactiver, cacher ou supprimer des lments du menu :
Il est parfois utile de dsactiver certaines options de votre menu. Pour cela il vous faut dfinir
la mthode Enabled sur False. Llment sera visible par lutilisateur mais ne pourra tre invoqu par
le clic ou par les touches de raccourcis.
Vous pouvez aussi cacher les lments de votre menu en dfinissant la proprit Visible sur
False. Celui-ci sera invisible lutilisateur mais cependant il peut encore linvoquer grce aux touches
de raccourcis. Ainsi il vous faudra dsactiver llment si vous voulez quil ne puisse tre invoqu.
Enfin si vous voulez supprimer un lment dfinitivement aprs plusieurs manipulations de
lutilisateur, il vous sera ncessaire dutiliser les mthodes MenuStrip.Items.Remove ou
MenuStrip.Items.RemoveAt pour un menu, ou bien les mthodes
ToolStripMenuItem.DropDown.Remove ou ToolStripMenuItem.DropDown.RemoveAt pour un sous-
menu. Vous trouverez ci-dessous un exemple comportant les diffrentes mthodes de
suppression (menu et sous-menu):
14 Les menus et vnements
14/09/08
VB
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
nous supprimons dans le code suivant llment Fichier du MenuStrip
MenuStripTest.Items.Remove(FichierToolStripMenuItem)
nous supprimons ici un lment du menu Editer (le sous-menu Couper)
EditerToolStripMenuItem.DropDownItems.Remove(CouperToolStripMenuItem)
nous supprimons le premier lment du MenuStrip
MenuStripTest.Items.RemoveAt(0)
nous supprimons llment Couper du menu Editer qui se trouve en premire
position (index 1)
EditerToolStripMenuItem.DropDownItems.RemoveAt(0)
End Sub
//C#
private void Form1_Load(object sender, EventArgs e)
{
//nous supprimons dans le code suivant llment Fichier du MenuStrip
menuStripTest.Items.Remove(FichierToolStripMenuItem) ;
//nous supprimons ici un lment du menu Editer (le sous-menu Couper)
EditerToolStripMenuItem.DropDownItems.Remove(CouperToolStripMenuItem) ;
//nous supprimons le premier lment du MenuStrip (index 0)
menuStripTest.Items.RemoveAt(0) ;
//nous supprimons llment Couper du menu Editer qui se trouve en
premire position (index 0)
EditerToolStripMenuItem.DropDownItems.RemoveAt(0);
}
15 Les menus et vnements
14/09/08
Dplacer vos lments
Vous pouvez dplacer vos lments de votre contrle lors de lexcution en utilisant la
mthode menuStrip.Items.Insert avec laquelle vous aurez la possibilit de choisir la position ou la
mthode menuStrip.Items.Add avec laquelle vous ajoutez seulement llment donc celui-ci se
placera en dernire position. Cela vous permettra de personnaliser dynamiquement vos menus. Par
exemple vous pouvez dplacer un sous-lment dun menu pour en faire un menu (le sous-lment
sera supprim automatiquement dans le menu o il se trouvait) ou changer lordre de vos menus :
VB
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
nous ajoutons llment Editer dans le contrle
MenuStripTest.Items.Add(EditerToolStripMenuItem)
nous insrons llment Editer en indiquant sa position(index 3)
MenuStripTest.Items.Insert(3, EditerToolStripMenuItem)
End Sub
//C#
private void Form1_Load(object sender, EventArgs e)
{
//nous ajoutons llment Editer dans le contrle
menuStripTest.Items.Add(editerToolStripMenuItem);
//nous insrons llment Editer en indiquant sa position(index 3)
menuStripTest.Items.Insert(3, editerToolStripMenuItem);
}
Vous pouvez galement utiliser la proprit ToolStripMenuItem.DropdownItems pour
dplacer un menu dans un autre ou encore un sous-lment dun menu dans un autre menu. Vous
utiliserez les mthodes Add ou Insert de la mme faon que lexemple prcdent :
16 Les menus et vnements
14/09/08
VB
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
nous ajoutons llment Couper du menu Fichier que nous avions cr dans
le menu Editer
EditerToolStripMenuItem.DropDownItems.Add(CouperToolStripMenuItem)
nous insrons llment Couper, en indiquant sa position(index 0),du menu
Fichier que nous avions cr dans le menu Editer
EditerToolStripMenuItem.DropDownItems.Insert(0, CouperToolStripMenuItem)
End Sub
//C#
private void Form1_Load(object sender, EventArgs e)
{
//nous ajoutons llment Couper du menu Fichier que nous avions cr dans
le menu Editer
editerToolStripMenuItem.DropDownItems.Add(couperToolStripMenuItem);
//nous insrons llment Couper, en indiquant sa position(index 0),du
menu Fichier que nous avions cr dans le menu Editer
editerToolStripMenuItem.DropDownItems.Insert(0, couperToolStripMenuItem);
}
Le raccourci clavier
Vous pouvez aussi crer des raccourcis pour vos contrles. Pour cela vous pouvez vous rfrer aux
prcdents chapitres (exemple : Chapitre 2 le contrle Label).
Les touches de raccourcis
A la diffrence du raccourci clavier, les touches de raccourcis permettent dexcuter une
commande et ne peuvent tre utiliss que dans les sous-menus. Par exemple dans le menu Fichier de
17 Les menus et vnements
14/09/08
votre programme vous pourrez dfinir les touches de raccourcis Ctrl+N pour accder au sous-menu
Nouveau et ainsi crer un nouveau fichier.
Vous pouvez crer les touches de raccourcis lors de la conception en slectionnant la proprit
ShortcutKeys dans les proprits du ToolStripMenuItem de votre choix. Ensuite si vous voulez afficher
vos touches de raccourcis dans le menu vous attribuerez alors la valeur True dans la proprit
ShownShortcutKeys ou bien grce la proprit ShortcutKeyDisplayString vous pourrez afficher un
texte la place de la combinaison des touches que vous avez dfini votre lment.
Nous dfinissons ici les touches de raccourcis Alt+N notre lment Nouveau dans notre
menu Fichier.
Fusionner les menus :
Les menus peuvent tre fusionns au moment de lexcution et les lments de ces menus
sont intgrs dans un menu unique. Vous pouvez fusionner des MenuStrip, des ContextMenuStrip
(nous verrons ce contrle en dtails plus loin dans la leon), ou bien les deux. Pour cela vous
18 Les menus et vnements
14/09/08
utiliserez la mthode ToolStripManager.Merge en indiquant le menu source, le menu de destination,
et laction entreprendre par la proprit MergeAction. Voici les diffrentes options que propose
cette proprit :
Proprits Description
Append Ajoute llment la fin de la collection
Insert Insert llment lemplacement spcifi par
la proprit MergeIndex.
MatchOnly Permet de crer une arborescence et accder
correctement aux lments imbriqus
Remove Supprime llment spcifi.
Replace Remplace llment identifi par llment
source.
3.3 Le contrle ContextMenuStrip
Le contrle ContextMenuStrip est un menu contextuel qui saffiche lorsque lutilisateur ralise
un clic-droit sur un contrle (TextBox, Bouton) ou sur une zone du Formulaire. Ce contrle est
similaire au MenuStrip, cependant la principale diffrence entre ces deux contrles est le fait que le
ContextMenuStrip ne possde pas de menu de haut niveau c'est--dire quil ne dtient pas une
arborescence comme dans les MenuStrip (ex : un haut niveau menu appel Fichier contenant des
sous-menus).
Ajouter ou supprimer un ContextMenuStrip :
Vous utiliserez tout simplement les mthodes ContextMenuStrip.Items.Add pour ajouter et
ContextMenuStrip.Items.Remove pour supprimer, comme dans lexemple de code suivant :
19 Les menus et vnements
14/09/08
VB
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
nous ajoutons llment Annuler dans le contrle ContextMenuStripTest
ContextMenuStripTest.Items.Add(AnnulerToolStripMenuItem)
nous supprimons cet lment du contrle ContextMenuStripTest
ContextMenuStripTest.Items.Remove(AnnulerToolStripMenuItem)
End Sub
//C#
private void Form1_Load(object sender, EventArgs e)
{
\\nous ajoutons llment Annuler dans le contrle ContextMenuStripTest
contextMenuStripTest.Items.Add(annulerToolStripMenuItem) ;
\\nous supprimons cet lment du contrle ContextMenuStripTest
contextMenuStripTest.Items.Remove(annulerToolStripMenuItem) ;
}
Associer un ContextMenuStrip un contrle ou une Form:
Pour associer un ContexMenuStrip un contrle ou votre Form, il vous faut simplement
slectionner votre ContextMenuStrip dans la proprit ContextMenuStrip du contrle ou de la Form
auquel vous voulez lassocier. Vous avez alors la possibilit soit de le faire lors de la conception de
votre programme soit lors de lexcution comme ci-dessous :
20 Les menus et vnements
14/09/08
VB
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
nous ajoutons quelques lment dans le ContextMenuStripTest
ContextMenuStripTest.Items.Add(AffichageToolStripMenuItem)
ContextMenuStripTest.Items.Add(NouveauToolStripMenuItem)
puis nous associons ce ContextMenuStrip au contrle TextBox
TextBox1.ContextMenuStrip = ContextMenuStripTest
End Sub
//C#
private void Form1_Load(object sender, EventArgs e)
{
nous ajoutons llment Annuler dans le contrle ContextMenuStripTest
contextMenuStripTest.Items.Add(affichageToolStripMenuItem);
contextMenuStripTest.Items.Add(nouveauToolStripMenuItem);
puis nous associons ce ContextMenuStrip au contrle TextBox
textBox1.ContextMenuStrip = ContextMenuStripTest;
}
21 Les menus et vnements
14/09/08
Copie des lments dun menu partir dun Menustrip au moment de lexcution :
Le plus souvent vous voulez crer des menus contextuels qui contiennent les mmes
lments quun menu contextuel ordinaire. Pour cela il vous suffit dappeler le constructeur
ToolStripMenuitem qui vous permettra de prciser le texte, limage et lvnement clic dun
gestionnaire dvnement. Ainsi vous ajoutez le MenuStrip choisi votre contrle ContextMenuStrip.
Vous trouverez un exemple ci-dessous manipulant ces diffrentes mthodes :
VB
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
nous appelons le constructeur ToolStripMenuItem puis ses mthodes
Dim anItem As ToolStripMenuItem
anItem = New ToolStripMenuItem(EditerToolStripMenuItem.Text,
_EditerToolStripMenuItem.Image, New EventHandler(addressof
_EditerrToolStripMenuItem_Click))
puis nous copions dans le contrle ContextMenuStrip
ContextMenuStripTest.Items.Add(anItem)
End Sub
//C#
private void Form1_Load(object sender, EventArgs e)
{
//nous appelons le constructeur ToolStripMenuItem puis ses mthodes
ToolStripMenuItem anItem
anItem = new ToolStripMenuItem(editerToolStripMenuItem.Text,
_editerToolStripMenuItem.Image, new
EventHandler(editerToolStripMenuItem_Click))
//puis nous copions dans le contrle ContextMenuStrip
contextMenuStripTest.Items.Add(anItem)
}
22 Les menus et vnements
14/09/08
4 Grer les vnements et utiliser le Event Handlers
Un vnement est une sorte de message qui permet de signaler que quelque chose se passe
dans votre application. Lorsque quun vnement est dclench, cela offre la possibilit de ragir
avec ces vnements grce aux mthodes Event Handlers (gestionnaire dvnement).
4.1 Les vnements en gnral
Les vnements appartiennent au contrle ou la classe qui les contiennent. En effet,
lorsque que quelque chose se passe, un contrle ou une classe peut appeler un vnement comme
par exemple lorsque quun utilisateur clique sur un bouton, cela lance un Click qui par la suite
excute les mthodes quil contient. Les vnements sont gnrs grce la souris, le clavier, ou
bien dautres actions du systme (exemple : envoie dun mail lors dune nouvelle particulire
laquelle vous tes abonn.
Remarque : Une mthode peut grer plusieurs vnements et un vnement peut tre grer par
plusieurs mthodes !
Voici les vnements les plus communs :
Types dvnements Description
Click Gnr lors du clic gauche de la souris.
DoubleClick Gnr lors dun double clic rapide du clic
gauche de la souris.
KeyDown Gnr lors le la pression dune touche quand le
control a le focus. Il contient des informations
diffrentes du KeyPress.
KeyPress Gnr lors le la pression dune touche quand le
contrle a le focus. Il contient des informations
diffrentes du KeyDown.
KeyUp Gnr lors du relchement dune touche quand
le contrle a le focus.
MouseClick Gnr lorsque quune touche quelconque de la
souris est presse.
MouseDoubleClick Gnr lorsque quune touche quelconque de la
souris est presse deux fois rapidement.
MouseDown Gnr lorsque le curseur de la souris est sur le
23 Les menus et vnements
14/09/08
contrle et quun bouton de la souris est press.
MouseEnter Gnr lorsque le curseur de la souris se trouve
dans le contrle.
MouseHover Gnr lorsque le curseur se positionne sur le
contrle.
MouseLeave Gnr lorsque le curseur scarte du contrle.
MouseMove Gnr lorsque le curseur de la souris est plac
sur le contrle.
MouseUp Gnr lorsque le curseur de la souris se trouve
sur le contrle et que le bouton de la souris est
relch.
MouseWheel Gnr lorsque la roulette de la souris bouge
alors quun contrle a le focus.
24 Les menus et vnements
14/09/08
4.2 Crer un gestionnaire dvnements (Event Handlers) la conception
Vous avez accs au gestionnaire des vnements dun contrle en allant sur la proprit de
celui-ci et en cliquant sur licne (clair encadr en rouge ci-dessous).
25 Les menus et vnements
14/09/08
4.3 Crer un vnement pour un contrle
Il suffit daller dans le gestionnaire dvnement de votre contrle puis de double-cliquer sur
lvnement que vous souhaitez. Cela vous mnera directement dans le code o vous pourrez
associer le contrle et votre vnement aux tches que vous souhaitez que votre contrle fasse.
Vous pouvez associer plusieurs vnements un mme contrle ainsi que plusieurs contrles au
mme vnement.
4.4 Grer les vnements au clavier et la souris
La majorit des vnements sont dclenchs par la souris ou le clavier :
Evnement dclench par le clavier :
Nous avons vu prcdemment les trois vnements principaux du clavier : le KeyDown, le KeyPress et
le KeyUp.
Les informations permettant de connatre les activits des ces Key se trouvent dans le
KeyEventArgs. En effet de base, les informations les plus communes se trouvent dans lEventArgs ;
dans le cas du clavier, dautres informations sont susceptibles de servir, par exemple savoir quelle
touche a t presse ! Par consquent le KeyEventArgs remplace lEventArgs tout en hritant de ses
informations.
26 Les menus et vnements
14/09/08
Voici les proprits du KeyEventArgs :
Types de Proprits Description
Alt Rcupre la valeur indique quand la touche Alt
est presse.
Control Rcupre la valeur indique quand la touche Ctrl
est presse.
Handled Rcupre ou dfinit une valeur indiquant si
lvnement a t gr.
KeyCode Retourne le code de la touche presse.
KeyData Retourne les donnes de la touche presse.
KeyValue Retourne une reprsentation de la proprit
KeyData.
Modifiers Rcupre les indicateurs de touches de
modification dun vnement. Les indicateurs
indiquent la combinaison de touches Ctlr, Alt et
Maj actives.
Shift Rcupre la valeur indique quand la touche
Shift est presse.
SuppressKeyPress Rcupre ou dfinit une valeur qui indique si
lvnement dune touche doit tre transmit au
contrle sous-jacent.
Evnement dclench par la souris :
Les deux actions les plus communes avec la souris sont le clique et le double-clique (Click et
DoubleClick). Par rapport au clavier les informations permettant de connatre leurs activits se
trouvent dans le simple EvenArgs.
Voici par exemple lassociation dun Button avec un vnement Click :
VB
private Sub button1_Click(ByVal sender As System. Object, e As
System.EventArgs e)
//Vous crivez ici l'action qui va se drouler au moment de
l'vnement.
27 Les menus et vnements
14/09/08
//C#
private void button1_Click(object sender, EventArgs e)
{
//Vous crivez ici l'action qui va se drouler au moment de
l'vnement.
}
En revanche les autres proprits (vu prcdemment au 4.1) Mouse ont un MouseEventArgs la
place de EventArgs. Le MouseEventArgs fonctionne comme le KeyEventArgs avec des informations
diffrentes et ayant un rapport avec la souris. En effet, il est important de pouvoir connatre la
position du curseur, les pressions, etc.
Voici les proprits du MouseEventArgs :
Types de Proprits Description
Button Indique quel bouton a t press.
Clicks Indique combien de fois un bouton a t press.
Delta Indique le nombre de fois o la molette a t
touche.
Location Indique la position actuelle de la souris.
X Indique la coordonne X de la position de la
souris.
Y Indique la coordonne Y de la position de la
souris.
4.5 Charger des mthodes avec le Code Editor
Le modificateur override en C# et Override en Visual Basic est ncessaire pour tendre ou
modifier l'implmentation abstraite ou virtuelle d'une mthode, d'une proprit, d'un indexeur ou
d'un vnement hrit(e).
Le Code Editor vous permet de charger ces mthodes facilement dans votre classe de base.
Vous devez donc dans votre diteur, lintrieur de votre classe corps mais en dehors dune
mthode, taper override en C# ou Override en Visual Basic. Un menu droulant saffiche et vous
permet de choisir la mthode que vous voudrez grce la saisie automatique.
28 Les menus et vnements
14/09/08
En C#
En Visual Basic
5 Conclusion
Vous avez termin ce 4me chapitre de Windows Form. Comme dhabitude, nous vous
conseillons de pratiquer ce que vous venez de voir et galement de vous aider du MSDN pour avoir
un support complet des lments Winforms.
Lquipe Windows Form.
Top Related