Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a right click mouse event? Changing EventArgs to MouseEventArgs causes an error in Form1Designer?

I have a method to detect the left click event that visual studio made by double clicking on the form.

private void pictureBox1_Click(object sender, EventArgs e) {     MessageBox.Show("Left click"); } 

I want to have a right-click event by right-clicking on the same object.

I read online that you can use this switch:

private void pictureBox1_Click(object sender, EventArgs e) {     if (e.Button == System.Windows.Forms.MouseButtons.Right){MessageBox.Show("Right click");}     if (e.Button == System.Windows.Forms.MouseButtons.Left){MessageBox.Show("Left click");} } 

The trouble is that when I do e.Button it has has yields an error error:

System.EventArgs does not contain a definition for Button...

So I fix this by changing the EventArgs.e to MouseEventArgs.e

But then there is a new error in Form1Designer where the event line is:

this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); 

The error says:

No overload for pictureBox1_Click matches delegate System.EventHandler

How do I fix this? Thanks for reading

like image 562
Danny Avatar asked Oct 18 '13 11:10

Danny


2 Answers

You should introduce a cast inside the click event handler

MouseEventArgs me = (MouseEventArgs) e; 
like image 99
Sriram Sakthivel Avatar answered Sep 22 '22 18:09

Sriram Sakthivel


You need MouseClick instead of Click event handler, reference.

switch (e.Button) {      case MouseButtons.Left:     // Left click     break;      case MouseButtons.Right:     // Right click     break;     ... } 
like image 38
Coder Avatar answered Sep 24 '22 18:09

Coder