我有一个自动滚动的表单,并且表单中有一个用户可编辑的区域。用户可以调整大小或移动控件。
移动控件时,如果将它们移到窗体的客户区之外,则会显示滚动条。这是我的意图。
现在,表单将自动向下滚动,因此当用户不释放鼠标时,控件将继续向下移动。这显然不是故意的。
我曾尝试在移动(或调整大小)开始时禁用自动滚动,但效果不佳......如果控件超出了表单的客户端,则一旦移动开始,它就会向上(或向左)移动。
移动子控件时锁定滚动条的方法是什么?
---编辑:示例代码---
只是一个关于移动控件的例子。
//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)
当我移出窗体的边界时,滚动条出现并开始向下/向右滚动以适应控件......这反过来又移动控件,因为有鼠标移动事件,依此类推......
您可以通过覆盖该方法来防止Form或Panel滚动ScrollToControl,例如:
protected override Point ScrollToControl(Control activeControl) {
Point pt = this.AutoScrollPosition;
return pt;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1439 次 |
| 最近记录: |