C# – Can i grab Click and DoubleClick in a node treeview C#

ctreeviewwinforms

I'm trying to define different handlers for click and double click events in a node in a TreeView, but the click event is always fired and the double ignored.
Can I have both working?

try 1

    private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        MessageBox.Show(e.Node.Text.ToUpper());
    }
    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        MessageBox.Show(e.Node.Text);
    }

try2

    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        switch (e.Clicks)
        {
            case 1:
                MessageBox.Show(e.Node.Text); break;
            case 2:
                MessageBox.Show(e.Node.Text.ToUpper()); break;
            default:
                break;
        }
    }

Best Answer

you can try this method... but this is not a proper way

need a timer control, say timer1, set interval 500.

timer1.Interval = 500;

declare a variable to check mouse click

static int mClick = 0;

in the treeview mouse down

private void treeView1_MouseDown(object sender, MouseEventArgs e)
        {
            mClick++;
            timer1.Enabled = true;
        }

in the timer tick

private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            if (mClick == 1)
            {
                mClick = 0;
                MessageBox.Show("single click");

            }
            if (mClick == 2)
            {
                mClick = 0;
                MessageBox.Show("double click");
            }

        }

this is working properly in my side.

rest is up to you...

Related Topic