문제

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?

도움이 되었습니까?

해결책

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
    }
}

다른 팁

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
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top