移动控件时停止滚动表单

RSi*_*ara 0 .net c# winforms

我有一个自动滚动的表单,并且表单中有一个用户可编辑的区域。用户可以调整大小或移动控件。

移动控件时,如果将它们移到窗体的客户区之外,则会显示滚动条。这是我的意图。

现在,表单将自动向下滚动,因此当用户不释放鼠标时,控件将继续向下移动。这显然不是故意的。

我曾尝试在移动(或调整大小)开始时禁用自动滚动,但效果不佳......如果控件超出了表单的客户端,则一旦移动开始,它就会向上(或向左)移动。

移动子控件时锁定滚动条的方法是什么?

---编辑:示例代码---

只是一个关于移动控件的例子。

//Start moving if the button is clicked on
public void Button1_OnMouseDown()
{
   _moving=true;

}


//If the button was clicked on, move it to mouse position
public void OnMouseMove(object sender, MouseEventArgs e)
{
     if(_moving)
         Button1.Location=new Poiny(e.X, e.Y);
}
Run Code Online (Sandbox Code Playgroud)

当我移出窗体的边界时,滚动条出现并开始向下/向右滚动以适应控件......这反过来又移动控件,因为有鼠标移动事件,依此类推......

Loa*_*ing 6

您可以通过覆盖该方法来防止FormPanel滚动ScrollToControl,例如:

protected override Point ScrollToControl(Control activeControl) {
    Point pt = this.AutoScrollPosition;
    return pt;
}
Run Code Online (Sandbox Code Playgroud)