C#区分拖放和鼠标点击

C# distinguish Drag drop and Mouse click

我有一个允许放置的表单,我还需要捕获点击事件。

这里棘手的部分是,当用户将对象拖放到窗体上时,MouseClickEvent 也会触发 - 因为他还单击了鼠标以释放拖放。

如何在单独的事件触发器中处理每个此类事件?

提前致谢!

这是一个简短且更具逻辑性的问题,所以我没有看到将代码片段放在这里的真正原因..

谢谢!

添加一个全局布尔值,例如:

private bool isDragAndDrop;

加载表单时将其设置为 false。当触发 dragAndDrop 事件时,您应该设置 isDragAndDrop = true

当触发 Click 事件时,您检查 if(!isDragAndDrop) 这将根据 isDragAndDrop 变量的值执行或不执行 click 事件中的代码。

在离开点击事件之前你设置isDragAndDrop = false

我在这个 link

上找到了这个解决方案
    private void MyMouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left && e.Clicks == 1)
        {
            Control source = (Control)sender;
            source.DoDragDrop(new MyWrapper(source), DragDropEffects.Move);
        }
    }

作者:Bill Rawlinson — 2007 年 4 月 18 日