Detecting Mouse Button Events in C#
This is a simple program I wrote when I needed to detect the right mouse button click in a listbox and couldn't find it in the VS.NET IDE. In the documentation I came across a class called "MouseEventArgs".
MouseEventArgs is passed to a MouseEventHandler defined for the listbox. In the InitializeComponent() method for the form is the definition and initialization of the components of the form. I added The following to this section:
this.m_listbox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ButtonDown);
This sets the method ButtonDown to receive all mouse button events. There I determine what button was pressed, what row was clicked on, and display the results. The only events I see useful are left, right, and middle. Microsoft added two more events, XButton1 and XButton2, for it's own devices. The documentation even has a 'none' event, which I cannot fathom. That's about it.
//---------------------------------------------------------------------
{
Application.Exit();
}
//---------------------------------------------------------------------
private void
ButtonDown(object sender, MouseEventArgs mea)
{
int nDx = 0; //This will
be the 0 based index of the row clicked on
if (mea.Button ==
MouseButtons.Right) { //Check for right button click
MessageBeep(16);
m_mouse_event.Text = "Right
Button Clicked\r\n";
}
else if
(mea.Button == MouseButtons.Left) { //Check for Left
button click
MessageBeep(256);
m_mouse_event.Text = "Left
Button Clicked\r\n";
}
nDx = mea.Y / m_listbox.ItemHeight; //Get
Index of item selected
m_mouse_event.Text = m_mouse_event.Text +
"Item
height = " + m_listbox.ItemHeight.ToString()+ "\r\n" +
"X
position = " + mea.X.ToString() + "\r\n" +
"Y
position = " + mea.Y.ToString() + "\n" +"\r\n"+
"Index = " + nDx.ToString();
if ( m_listbox.Items.Count
<= nDx ) m_mouse_event.Text = m_mouse_event.Text + "\r\n" +
"Row
Clicked Beyond Table size";
else
m_listbox.SetSelected(nDx,true);
//highlight row selected
}
//-------------------------------------------------------------------
Downloads
Download demo project - 79 KbDownload source - 8 Kb

Comments
Comment protocol needs overhaul..
Posted by Legacy on 05/29/2003 12:00amOriginally posted by: Chris
Obviously, the ability for just anyone to post a comment is being abused. It's a shame to see someone who takes the time and effort to post an article be insulted by juvenile behaviour.
Maybe only registered members who are signed in should be able to post a comment? I'm sure this would cut down on the abuse.
( Of course, one has to wonder: Are the comments posted by 'Bill Gates' from the *real* Bill Gates of Microsoft fame? I wouldn't be surprised! )
ReplyThanks for spending your time
Posted by Legacy on 05/27/2003 12:00amOriginally posted by: Bryan Hinton
Reply