C# 如何实现同一控件的单击和拖动?

C# 如何实现同一控件的单击和拖动?,c#,winforms,C#,Winforms,我有一个控件,我希望用户可以选择单击或拖动它。类似于windows资源管理器中的文件 我知道怎么拖。我不知道一个简单的点击“开火”的方法,因为在鼠标下拖动鼠标可以阻止它 有没有一个简单的方法可以做到这一点 谢谢。您应该搜索有关如何拖动和移动控件的示例,我早在Delphi looong中(大约11年前)就做过这件事了,所有这些都是关于鼠标坐标和在mouseDown和mouseUp上设置的标志 我在这里发现了一些东西:可能是.NET中解决方案的灵感来源。我建议您实现一些出现的可见拖动手柄,允许他们抓

我有一个控件,我希望用户可以选择单击或拖动它。类似于windows资源管理器中的文件


我知道怎么拖。我不知道一个简单的点击“开火”的方法,因为在鼠标下拖动鼠标可以阻止它

有没有一个简单的方法可以做到这一点


谢谢。

您应该搜索有关如何拖动和移动控件的示例,我早在Delphi looong中(大约11年前)就做过这件事了,所有这些都是关于鼠标坐标和在mouseDown和mouseUp上设置的标志


我在这里发现了一些东西:可能是.NET中解决方案的灵感来源。我建议您实现一些出现的可见拖动手柄,允许他们抓取和移动控件。也许如果他们在控件上停留超过200毫秒或类似的时间。

我从来没有这样做过,但你可以


对于单击,当mousedown事件激发时,获取控件的当前位置。然后在mouseup上,检查当前位置是否等于mousedown中的位置。如果它们相等(或接近,以便为意外移动提供一定的公差),则表示单击。如果差异很大,那就是拖拽,你可以做任何你需要做的事情。

我知道如何拖拽。我不知道一个简单的点击“开火”的方法,因为拖动鼠标向下可以防止它。我知道如何拖动。我不知道一个简单的点击“开火”的方法,因为启动鼠标向下拖动可以防止它。@ispiro:我不清楚。200毫秒后,显示一个拖动手柄(一个完全不同的控件)。拖动手柄mousedown应该负责拖动操作。把鼠标放在一边,谢谢。我会考虑这个选项。