Detecting Mouse Button Events in C#

MouseButtonTest



Click here for larger image

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.

//---------------------------------------------------------------------
private void OKButtonClick(object sender, System.EventArgs e)
{
   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 Kb
Download source - 8 Kb


Comments

  • Comment protocol needs overhaul..

    Posted by Legacy on 05/29/2003 12:00am

    Originally 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! )

    Reply
  • Thanks for spending your time

    Posted by Legacy on 05/27/2003 12:00am

    Originally posted by: Bryan Hinton

    Thanks for spending your time writing the article - I found it interesting and just wanted to post something positive compared to whoever this other poster was.  
    

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Webinar June 2, 2015 - 11 am PST / 2 pm EST Your organization and brand are increasingly digital today, proliferating across websites, media outlets, social networks, search engines, mobile apps, online marketplaces and more. Each digital touch point not only enhances the value of your brand, but also represents far greater risk for your company. They increase opportunities for brand defamation and data leakage; act as discreet places to conspire and collude; and open the door to new security …

  • Employees must exchange sensitive emails with customers and partners. These emails might contain protected health information, protected financial information, or corporate information that should not be made public. Globalscape® Mail Express® allows you to encrypt the emails that it manages so that no one but the sender and recipient--not even the administrator--can view the contents of the email. "Secure the Transfer of Sensitive Emails" is the property of GlobalSCAPE

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date