Vous êtes sur la page 1sur 28

1

Les menus et vnements

Les menus et vnements


Sommaire

Introduction ..................................................................................................................................... 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

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

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

Conclusion ..................................................................................................................................... 28

14/09/08

Les menus et vnements

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.

14/09/08

Les menus et vnements

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.

14/09/08

Les menus et vnements

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

14/09/08

Les menus et vnements

//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.

14/09/08

Les menus et vnements

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.

14/09/08

Les menus et vnements

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.

14/09/08

Les menus et vnements

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.

14/09/08

Les menus et vnements

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

14/09/08

10

Les menus et vnements

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.

14/09/08

11

Les menus et vnements

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

14/09/08

12

Les menus et vnements

//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 :

14/09/08

13

Les menus et vnements

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 celuici
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 celuici
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 sousmenu. Vous trouverez ci-dessous un exemple comportant les diffrentes mthodes de
suppression (menu et sous-menu):

14/09/08

14

Les menus et vnements

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);
}

14/09/08

15

Les menus et vnements

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 :

14/09/08

16

Les menus et vnements

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

14/09/08

17

Les menus et vnements

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

14/09/08

18

Les menus et vnements

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 :

14/09/08

19

Les menus et vnements

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 :

14/09/08

20

Les menus et vnements

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;
}

14/09/08

21

Les menus et vnements

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)
}

14/09/08

22

Les menus et vnements

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

14/09/08

23

Les menus et vnements

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.

14/09/08

24

Les menus et vnements

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).

14/09/08

25

Les menus et vnements

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.

14/09/08

26

Les menus et vnements

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.

14/09/08

27

Les menus et vnements

//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.

Indique la coordonne X de la position de la


souris.

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.

14/09/08

28

Les menus et vnements

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.
14/09/08