移动控件时停止窗体滚动
本文关键字:窗体 滚动 移动控件 | 更新日期: 2023-09-27 18:12:09
我有一个开启自动滚动的表单,并且在表单中有一个用户可编辑的区域。用户可以调整或移动控件。
在移动控件时,如果控件移动到表单的客户端区域之外,将显示滚动条。这就是我的意图。
现在,表单将自动向下滚动,所以当用户不释放鼠标时,控件将继续向下移动。这显然不是我想要的。
我试过在移动(或调整大小)开始时禁用自动调节,但没有效果…如果控件超出了表单的客户端范围,则一旦开始移动,它就会向上(或向左)移动。
当我移动子控件时,锁定滚动条的方法是什么?
——编辑:示例代码——
只是一个关于移动控件的例子。
//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);
}
当我移出表单的边界时,滚动条出现并开始向下/向右滚动以适合控件…因为有鼠标移动事件,所以它会依次移动控件,等等…
您可以通过覆盖ScrollToControl
方法来阻止Form
或Panel
滚动,例如:
protected override Point ScrollToControl(Control activeControl) {
Point pt = this.AutoScrollPosition;
return pt;
}