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

  • Data integrity and ultra-high performance dictate the success and growth of many companies. One of these companies is BridgePay Network Solutions, a recently launched and rapidly growing financial services organization that allows merchants around the world to process millions of daily credit card transactions. Due to the nature of their business, their IT team needed to strike the perfect balance between meeting regulatory-mandated data security measures with the lowest possible levels of latency and …

  • The 2014 State of DevOps Report — based on a survey of 9,200+ people in IT operations, software development and technology management roles in 110 countries — reveals: Companies with high-performing IT organizations are twice as likely to exceed their profitability, market share and productivity goals. IT performance improves with DevOps maturity, and strongly correlates with well-known DevOps practices. Job satisfaction is the No. 1 predictor of performance against organizational …

Most Popular Programming Stories

More for Developers

RSS Feeds

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