VAAA
VAAA

Reputation: 15039

UserControl click event is slow

I have my UserControl, and I have attached it's click event so I can set it's border style.

public partial class TestControl : UserControl
{
    public TestControl()
    {
        InitializeComponent();
        this.Click += Item_Click;
        IsSelected = false;
    }

    public bool IsSelected { get; set; }

    void Item_Click(object sender, EventArgs e)
    {
        if (!IsSelected)
        {
            IsSelected = true;
            this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
        }
        else
        {
            IsSelected = false;
            this.BorderStyle = System.Windows.Forms.BorderStyle.None;
        }
    }
}

When I click over the UserControl I get it's border style assigned or removed... this works fine. But if I try to click faster It doesn't respond as I click on the UserControl.

If I click once and then wait and click again it works perfect but I want to increase the click response time, like if it was a button.

Any clue on how do I have this behavior?

Upvotes: 0

Views: 815

Answers (1)

LarsTech
LarsTech

Reputation: 81655

If you are clicking very fast, you are getting a Double-Click event. Try using the MouseDown event instead.

But since this is the UserControl's base event, you can just override the method instead of attaching an event handler:

protected override void OnMouseDown(MouseEventArgs e) {
  base.OnMouseDown(e);

  if (e.Button == MouseButtons.Left) {
    // your code here...
  }
}

Upvotes: 3

Related Questions