我正在为 C# 中的一个应用程序工作,其中我必须在面板中显示一些控件。控件可以拖动。一切正常,除了一件事,如下所述
- 假设我在主面板中有一个面板(控件容器)。主面板具有 AutoScroll 属性 true。因此,当内部面板(控件容器)的高度大于主面板的高度时,主面板显示滚动条。
- 假设由于高度比主面板大,内面板显示在两个区域中。当我在内面板中添加图片框时,图片框显示在上部区域,因为我在开始时设置了位置 10,10。
当我尝试将这个图片框向下拖动时,它会随着鼠标的移动而移动。如果图片框进入内部面板的下部区域,主面板的滚动条会自动下降,鼠标位置会根据当前位置自动下降,图片框也会下降下降到那个位置。但这不是理想的位置。我的代码对于移动物体很简单。
public static void Init(Control control, Control container, Direction direction) { bool Dragging = false; Point DragStart = Point.Empty; control.MouseDown += delegate(object sender, MouseEventArgs e) { Dragging = true; DragStart = e.Location; control.Capture = true; HoldOn.Invoke(sender, e); }; control.MouseUp += delegate(object sender, MouseEventArgs e) { Dragging = false; control.Capture = false; }; control.MouseMove += delegate(object sender, MouseEventArgs e) { if (Dragging) { control.Location = new Point(e.X - DragStart.X + control.Location.X, e.Y - DragStart.Y + control.Location.Y); } }; }
我添加了一张图片来显示我的问题。希望对您理解有所帮助。