如何在winforms应用程序中单击并拖动

如何在winforms应用程序中单击并拖动,winforms,mouse,mouseevent,Winforms,Mouse,Mouseevent,我有一个简单的winforms应用程序,其中有许多控件。我希望能够从表单上的任何位置单击和拖动,并移动整个内容集()。我已经找到了重新定位的位置。我仍然需要弄清楚的是如何将单击和拖动绑定到更新偏移中 到目前为止,我一直在尝试向主窗体的MouseDown、MouseUp和MouseMove事件添加内容(看起来有点像),但它们没有被调用(它们中的断点不会被命中) 我做错了什么 编辑:我不是在寻找拖放,因为我不一定要拖放任何东西。我想要的将与以下规格配合使用: 创建一个没有控件的窗体 设置一个x和

我有一个简单的winforms应用程序,其中有许多控件。我希望能够从表单上的任何位置单击和拖动,并移动整个内容集()。我已经找到了重新定位的位置。我仍然需要弄清楚的是如何将单击和拖动绑定到更新偏移中

到目前为止,我一直在尝试向主窗体的
MouseDown
MouseUp
MouseMove
事件添加内容(看起来有点像),但它们没有被调用(它们中的断点不会被命中)

我做错了什么


编辑:我不是在寻找拖放,因为我不一定要拖放任何东西。我想要的将与以下规格配合使用:

  • 创建一个没有控件的窗体
  • 设置一个x和y变量,该变量在更新时打印到表单标题
  • 当用户单击并拖动表单上的任意位置时,x和y将更新以反映指针的运动(单击并向下向右拖动将导致
    x>0
    y>0

根据Eric的评论,我认为我是在错误的控件上连接事件


是否有一种方法(使用类似控件的设置)在一个位置捕获所有事件,而不管它们应该发送到什么位置?或者,如何将任何其他未受影响的事件链接到父级?在我的情况下,我永远不会在乎是什么让我得到了这次活动,所以这将是我想要得到的。

网上有一些关于拖放的教程,例如


事件没有触发的事实是不正常的。如果表单上有控件,则应该钩住这些控件的事件。另一种方法是在整个表单上有一个透明的面板来处理事件

如何准确地处理鼠标事件?如果有面板覆盖窗体,则不会调用窗体的鼠标事件。只有面板的鼠标事件才会触发。

事件未触发的事实是不正常的。如果表单上有控件,则应该钩住这些控件的事件。另一种方法是在整个表单上有一个透明的面板,用于处理事件检查事件处理程序是否仍然连接。我看到有时候设计师会删除它们。@Eric:请把你的评论转换成答案,这样我就可以投赞成票了。(如果您知道任何代码示例……)这可能就回答了我的问题。表单无法获取事件,因为其他内容正在获取。埃里克的评论似乎是一条出路。