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

  • Today's agile organizations pose operations teams with a tremendous challenge: to deploy new releases to production immediately after development and testing is completed. To ensure that applications are deployed successfully, an automatic and transparent process is required. We refer to this process as Zero Touch Deployment™. This white paper reviews two approaches to Zero Touch Deployment--a script-based solution and a release automation platform. The article discusses how each can solve the key …

  • On-demand Event Event Date: December 18, 2014 The Internet of Things (IoT) incorporates physical devices into business processes using predictive analytics. While it relies heavily on existing Internet technologies, it differs by including physical devices, specialized protocols, physical analytics, and a unique partner network. To capture the real business value of IoT, the industry must move beyond customized projects to general patterns and platforms. Check out this webcast and join industry experts as …

Most Popular Programming Stories

More for Developers

RSS Feeds