如何为同一控件实现单击和拖动?

时间:2011-08-30 21:53:17

标签: c# winforms

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

我知道怎么拖。我不知道点击“火”的简单方法,因为在mousedown上开始拖动会阻止它。

有一种简单的方法吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我建议您实现某种类型的可见拖动句柄,这样可以让它们抓取并移动控件。也许如果它们悬停在控件上超过200毫秒或类似的东西。

答案 1 :(得分:0)

你应该搜索关于如何拖动和移动控件的示例,我实际上是在Delphi looong前(大约11年前)完成的,它完全是关于在mouseDown和mouseUp上设置的鼠标坐标和标志。

我在这里找到了一些东西:http://www.codeproject.com/KB/dialog/MoveYourControls.aspx可能是.NET解决方案的灵感来源

答案 2 :(得分:0)

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

对于单击,当mousedown事件触发时,获取控件的当前位置。然后在mouseup上,检查当前位置是否等于mousedown的位置。如果它们相等(或接近对偶然移动给予一定的容忍度),则意图是点击。如果差异很大,那就是拖累,你可以做任何你需要做的事情。