Assembly : System.Windows.Forms (dans system.windows.forms.dll)
SyntaxePublic Class ContextMenu Inherits Menu
Dim instance As ContextMenu
public class ContextMenu : Menu
public ref class ContextMenu : public Menu
public class ContextMenu extends Menu
public class ContextMenu extends Menu
NotesLa classe ContextMenu représente des menus contextuels qui peuvent être affichés quand l'utilisateur clique avec le bouton droit de la souris sur un contrôle ou une région du formulaire. Les menus contextuels sont généralement utilisés pour combiner différents éléments de menu du MainMenu d'un formulaire qui sont utiles à l'utilisateur compte tenu du contexte de l'application. Par exemple, vous pouvez utiliser un menu contextuel assigné à un contrôle TextBox pour afficher des éléments de menu permettant de modifier la police du texte, rechercher du texte dans le contrôle ou d'utiliser les fonctionnalités du Presse-papiers pour copier et coller du texte. Vous pouvez également afficher dans un menu contextuel de nouveaux objets MenuItem qui ne font pas partie du MainMenu afin d'afficher des commandes spécifiques qui ne sont pas utiles dans le MainMenu.
Généralement, un menu contextuel est affiché quand un utilisateur clique avec le bouton droit de la souris sur un contrôle ou sur le formulaire lui-même. Les contrôles et le Form visibles possèdent une propriété ContextMenu qui lie la classe ContextMenu au contrôle qui affiche le menu contextuel. Un ContextMenu peut être utilisé par plusieurs contrôles. Vous pouvez utiliser la propriété SourceControl pour identifier le dernier contrôle qui a affiché le menu contextuel afin d'effectuer des tâches spécifiques au contrôle ou modifier le menu contextuel affiché pour le contrôle.
Il est possible de savoir quand le menu contextuel est affiché afin de sélectionner/désélectionner des éléments, désactiver des éléments et effectuer d'autres opérations avant que le menu soit affiché pour l'utilisateur. Vous pouvez utiliser l'événement Popup pour déterminer quand le menu contextuel doit être affiché.
Remarque |
|---|
| Pour utiliser dans un ContextMenu les objets MenuItem qui sont affichés dans un MainMenu, vous devez créer une copie du menu avec la méthode CloneMenu de la classe MenuItem. Vous pouvez également fusionner des éléments de menu et leurs éléments de sous-menu dans le même objet MenuItem en utilisant la méthode MergeMenu de la classe MenuItem. |
Remarque sur la plate-forme Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows CE : Sur Pocket PC, évitez d'utiliser des menus contextuels sur des formulaires secondaires car ceux-ci restent affichés après la destruction des formulaires parents.
ExempleL'exemple de code suivant crée un gestionnaire d'événements pour l'événement Popup de ContextMenu. Le code figurant dans le gestionnaire d'événements détermine le contrôle qui affiche le menu contextuel parmi les deux contrôles PictureBox nommé pictureBox1 et TextBox nommé textBox1. En fonction du contrôle à l'origine de l'affichage du menu contextuel de ContextMenu, le contrôle ajoute les objets MenuItem appropriés à ContextMenu. Cet exemple requiert que vous disposiez d'une instance de la classe ContextMenu, appelée contextMenu1, définie dans le formulaire. Cet exemple requiert également que le formulaire comprenne un TextBox et un PictureBox et que la propriété ContextMenu de ces contrôles ait la valeur contextMenu1.
Private Sub MyPopupEventHandler(sender As System.Object, e As System.EventArgs) ' Define the MenuItem objects to display for the TextBox. Dim menuItem1 As New MenuItem("&Copy") Dim menuItem2 As New MenuItem("&Find and Replace") ' Define the MenuItem object to display for the PictureBox. Dim menuItem3 As New MenuItem("C&hange Picture") ' Clear all previously added MenuItems. contextMenu1.MenuItems.Clear() If contextMenu1.SourceControl Is textBox1 Then ' Add MenuItems to display for the TextBox. contextMenu1.MenuItems.Add(menuItem1) contextMenu1.MenuItems.Add(menuItem2) ElseIf contextMenu1.SourceControl Is pictureBox1 Then ' Add the MenuItem to display for the PictureBox. contextMenu1.MenuItems.Add(menuItem3) End If End Sub 'MyPopupEventHandler '
private void MyPopupEventHandler(System.Object sender, System.EventArgs e) { // Define the MenuItem objects to display for the TextBox. MenuItem menuItem1 = new MenuItem("&Copy"); MenuItem menuItem2 = new MenuItem("&Find and Replace"); // Define the MenuItem object to display for the PictureBox. MenuItem menuItem3 = new MenuItem("C&hange Picture"); // Clear all previously added MenuItems. contextMenu1.MenuItems.Clear(); if(contextMenu1.SourceControl == textBox1) { // Add MenuItems to display for the TextBox. contextMenu1.MenuItems.Add(menuItem1); contextMenu1.MenuItems.Add(menuItem2); } else if(contextMenu1.SourceControl == pictureBox1) { // Add the MenuItem to display for the PictureBox. contextMenu1.MenuItems.Add(menuItem3); } }
private: void MyPopupEventHandler( System::Object^ /*sender*/, System::EventArgs^ /*e*/ ) { // Define the MenuItem objects to display for the TextBox. MenuItem^ menuItem1 = gcnew MenuItem( "&Copy" ); MenuItem^ menuItem2 = gcnew MenuItem( "&Find and Replace" ); // Define the MenuItem object to display for the PictureBox. MenuItem^ menuItem3 = gcnew MenuItem( "C&hange Picture" ); // Clear all previously added MenuItems. contextMenu1->MenuItems->Clear(); if ( contextMenu1->SourceControl == textBox1 ) { // Add MenuItems to display for the TextBox. contextMenu1->MenuItems->Add( menuItem1 ); contextMenu1->MenuItems->Add( menuItem2 ); } else if ( contextMenu1->SourceControl == pictureBox1 ) { // Add the MenuItem to display for the PictureBox. contextMenu1->MenuItems->Add( menuItem3 ); } }
private void MyPopupEventHandler(Object sender, EventArgs e) { // Define the MenuItem objects to display for the TextBox. MenuItem menuItem1 = new MenuItem("&Copy"); MenuItem menuItem2 = new MenuItem("&Find and Replace"); // Define the MenuItem object to display for the PictureBox. MenuItem menuItem3 = new MenuItem("C&hange Picture"); // Clear all previously added MenuItems. contextMenu1.get_MenuItems().Clear(); if (contextMenu1.get_SourceControl().Equals(textBox1)) { // Add MenuItems to display for the TextBox. contextMenu1.get_MenuItems().Add(menuItem1); contextMenu1.get_MenuItems().Add(menuItem2); } else { if (contextMenu1.get_SourceControl().Equals(pictureBox1)) { // Add the MenuItem to display for the PictureBox. contextMenu1.get_MenuItems().Add(menuItem3); } } } //MyPopupEventHandler
Hiérarchie d'héritageSystem.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Menu
System.Windows.Forms.ContextMenu
Sécurité des threads
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Remarque
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ