繁体   English   中英

MouseUp事件中断了吗?

[英]MouseUp event interrupted?

我正在使用面板进行自定义控件。 我希望能够拖放它,因此已经在控件的MouseDown事件中实现了它。 但是我希望事情在开始拖动时能够做出反应,以向用户提供一些反馈。 因此,即使在MouseDown中,我也更改了颜色。 然后,我想在MouseUp事件中将其更改回。

我的控件未安装到VS2008中,而只是安装了我编写的一个类,可以在运行时实例化(我事先不知道需要多少,依此类推)。 现在,我的控件公开了MouseDown事件,以便能够拖动它。 当我从父应用程序订阅此事件以实际执行拖放操作时,我的控件不会在其MouseUp事件上重新绘制! 实际上,从不调用MouseUp。 另一方面,如果我未在父应用程序中订阅该事件,则该事件按预期运行。

这是怎么回事? 父级是否正在中断流,以便MouseUp事件从不触发我的控件? 我该如何解决?

我不确定您是使用Windows窗体还是WPF,但是在Windows窗体中,这是我的意思:

public class DerivedPanel : Panel
{
    protected override void OnMouseDown(MouseEventArgs e)
    {
        base.OnMouseDown(e);
        Capture = true;
    }

    protected override void OnMouseUp(MouseEventArgs e)
    {
        base.OnMouseUp(e);
        Capture = false;
        // Change your color or whatever here
    }
}

在WPF中,有两种方法,CaptureMouse()和ReleaseMouseCapture()可以完成相同的操作。 当控件捕获鼠标时,即使光标不在控件上,它也会收到鼠标事件。 这可能导致您的问题。 请参阅MSDN文章

您是否在mousedown事件的自定义控件中捕获了鼠标? 尝试在mousedown上捕获并在mouseup上释放捕获。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM