Question

I am new to WinForms events and I am getting a strange error.Well I write when I start my control:

this.MouseUp += MouseUpMethod;

But the problem is, when I release the mouse button out of my control, the program recognize as I release the mouse over the Control. I am not able to understand this error. Did ever someone got this error?

Était-ce utile?

La solution

It's because, by default, your control captures mouse. Just set Control.Capture to false somewhere in your MouseDown event handler, for example:

void MouseDown(object sender, MouseEventArgs e) {
    this.Capture = false;
}

As alternative just check in MouseUp that mouse is still inside your control:

void MouseUp(object sender, MouseEventArgs e) {
    if (ClientRectangle.Contains(PointToClient(Cursor.Position))) {
        // Your code here
    }
}

Autres conseils

see, you need to associate event with event handler just after your InitializeComponent()

    public Form1()
    {
        InitializeComponent();
        this.button2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.button2_MouseUp);
    }

then your event handler should be

    private void button2_MouseUp(object sender, MouseEventArgs e)
    {
        //Do stuff here
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top