2011-09-20 7 views
6

J'essaie d'ajouter un menu contextuel à une zone de liste lorsque vous cliquez avec le bouton droit sur un élément.WinForms ListBox Clic droit

Je ne suis même pas sûr que le clic droit fonctionne correctement.

Voici le code:

private void lstSource_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
     Console.WriteLine("Right Click"); 
    } 
} 

imprime rien à la console. Est-ce que je manque quelque chose?

Merci.

+0

Votre application dispose-t-elle d'une console? Peut-être essayer d'afficher un MessageBox à la place? – AndrewC

Répondre

10

Assurez-vous câbler l'événement vers le haut (et la zone de liste est activé):

private void Form1_Load(object sender, EventArgs e) 
{ 
    listBox1.MouseDown += new MouseEventHandler(listBox1_MouseDown); 
} 

void listBox1_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
    MessageBox.Show("Right Click"); 
    } 
} 

Vous pouvez également le fil de concepteur l'événement pour vous en sélectionnant la zone de liste et double-cliquant sur l'événement MouseDown dans la fenêtre Propriétés (cliquez sur l'éclair).

+0

Parfait. Je vous remercie! – gberg927

2

Console.WriteLine() La méthode n'affiche rien sur l'interface graphique. Utilisez MessageBox.Show("Right Click");

private void lstSource_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
     MessageBox.Show("Right Click"); 
    } 
} 

EDIT: Assurez-vous que le gestionnaire est attaché à MouseDown événement ou non.

+0

J'ai essayé votre correction et il ne se passe toujours rien. – gberg927