0

我是 WinForms 事件的新手,遇到了一个奇怪的错误。好吧,我在启动控件时会写:

this.MouseUp += MouseUpMethod;

但问题是,当我释放鼠标按钮时,程序会识别出我在控件上释放鼠标。我无法理解这个错误。有人遇到过这个错误吗?

4

2 回答 2

1

这是因为默认情况下,您的控件会捕获鼠标。只需将Control.Capture设置为事件处理程序中的false 某个MouseDown位置,例如:

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

作为替代方法,只需检查MouseUp鼠标是否仍在您的控制范围内:

void MouseUp(object sender, MouseEventArgs e) {
    if (ClientRectangle.Contains(PointToClient(Cursor.Position))) {
        // Your code here
    }
}
于 2013-12-19T20:42:31.517 回答
0

看,您需要在 InitializeComponent() 之后将事件与事件处理程序相关联

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

那么你的事件处理程序应该是

    private void button2_MouseUp(object sender, MouseEventArgs e)
    {
        //Do stuff here
    }
于 2013-12-19T20:40:14.110 回答