2010-07-13 3 views
0

J'utilise NotifyIcon (icône de la barre d'état système) dans mon application WinForms. J'ai aussi un ContextMenuStrip qui lui est assigné. Lorsque l'utilisateur clique droit sur NotifyIcon, ce ContextMenuStrip apparaît.Comment modifier les propriétés des événements et créer de nouveaux événements en C# .NET

Ce sont les seuls événements que NotifyIcon a.

Click   
DoubleClick 
MouseClick 
MouseDoubleClick 
MouseDown 
MouseMove 
MouseUp 

Ces éléments contextMenuStrip (ToolStripMenuItem) sont générés dynamiquement. Je veux dire qu'il y a peu d'éléments par défaut comme 'About', 'Exit', 'Help' etc. mais d'autres éléments sont générés dynamiquement et insérés dans ce menu lorsque l'utilisateur clique dessus avec le bouton droit de la souris. Je générer des articles et insérer dans ContextMenuStrip dans le gestionnaire d'événements Click

Maintenant, j'ai deux problèmes:

  1. Le problème est pour un instant sa montrant la MenuStrip par défaut, puis mon gestionnaire d'événements Click exécute et nouveau menu de mise à jour apparaît. Comment puis-je éviter ça? Je ne veux pas voir le menu par défaut du tout. En d'autres termes, je dois remplacer le comportement par défaut.

  2. Autre problème étant donné que je gère l'événement Click (parce que je n'ai pas trouvé d'événement RightClick), le bouton gauche de la souris est également géré par le même gestionnaire. Je veux faire des choses différentes (comme montrer des fenêtres d'application) sur le clic gauche et montrer le contextMenuStrip généré dynamiquement sur le clic droit. Comment réaliser ceci?

  3. Pourquoi y a-t-il deux événements différents comme Click & MouseClick? Quoi d'autre pourrions-nous cliquer avec? Ne sont pas ces deux interdépendants. Je veux dire quand il y a un MouseClick, il y a aussi un clic.

Si vous pouvez me montrer quelques exemples. Ce serait génial!

Répondre

1

Article # 1) Le ContextMenuStrip a des événements qui vous permet de gérer toute création dynamique d'éléments de menu avant que le menu est affiché. Voir les événements Opening et Opened.

Point # 2) Utilisez le paramètre MouseEventArgs pour inspecter l'état de la souris lorsque l'événement a été déclenché.

Article n ° 3) Selon le contrôle, Click et MouseClick peuvent être différents. Prenez des boutons par exemple. Lorsqu'un bouton a le focus, l'événement "Click" est déclenché lorsque l'utilisateur appuie sur la touche Espace ou Entrée. Dans la plupart des cas, un MouseClick génère un événement Click.

0

Je suis l'OP. Je suppose que je l'ai réalisé.

notifyIcon.MouseDown += new MouseEventHandler(notifyIcon_MouseDown); 

et

static void notifyIcon_MouseDown(object sender, MouseEventArgs e) 
    { 
     NotifyIcon notifyIcon = sender as NotifyIcon; 
     if (e.Button == MouseButtons.Left) 
     { 
      MessageBox.Show("Left Button Clicked"); // & do what ever you want 

     } 
     else 
     { 
      updateMenuItems(notifyIcon.ContextMenuStrip); 
     } 
    } 
Questions connexes