2

我在可垂直拖动的标签页中有一个用户控件。控制也是可选择的。我希望用户能够单击该项目以选择它,但我不希望在他们完成拖动后触发 MouseClick 事件 - 只有 MouseUp 事件应该触发。IE。用户完成拖动后不应选择该项目。有什么建议吗?

4

2 回答 2

1

我假设这是 WinForms。

当你说你有一个用户控件时,你的意思是你有一个派生自的类UserControl吗?在这种情况下,您可以覆盖该OnMouseClick方法而不是 call base.OnMouseClick(e),这将阻止MouseClick触发。

就像 SamHi 建议的那样,您可以使用true在拖动开始时设置为的布尔值,一旦OnMouseClick被调用,您可以将该布尔值设置为 false,从而允许在拖动完成后发生鼠标单击。

例子:

public class MyUserControl : UserControl
{
    bool dragging = false;

    // ...

    protected override void OnMouseClick(MouseEventArgs e)
    {
        if (dragging)
        {
            // We've finished dragging, don't call MouseClick
            dragging = false;
            return;
        }

        // Not dragging, fire MouseClick
        base.OnMouseClick(e);
    }
}
于 2012-06-15T04:44:59.990 回答
0

尝试在拖动时设置一个等于 true 的拖动布尔值,然后在短时间运行后将其关闭。这样,您可以在 MouseClick 事件中添加一条 if 语句,以查看它是否最近被拖动。

于 2012-06-15T02:50:51.330 回答