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 日
我有一个允许放置的表单,我还需要捕获点击事件。
这里棘手的部分是,当用户将对象拖放到窗体上时,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 日