移动控件时停止滚动表单

时间:2015-09-10 22:02:45

标签: c# .net winforms

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

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

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

我已经尝试在移动(或调整大小)开始时禁用autoscrool,但没有好......如果控件超出了客户端的形式,一旦移动开始它就会向上移动(或向左移动)。

当我移动儿童控件时,锁定scroolbar的方法是什么?

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

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

//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);
}

当我离开窗体的边界时,出现了scroolbars并开始向下/向右滚动以适应控件...这反过来会移动控件,因为有鼠标移动事件,等等。

1 个答案:

答案 0 :(得分:4)

您可以通过覆盖Form方法阻止PanelScrollToControl滚动,例如:

protected override Point ScrollToControl(Control activeControl) {
    Point pt = this.AutoScrollPosition;
    return pt;
}
相关问题