0

我正在为 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);
    
    
            }
        };
    }
    

我添加了一张图片来显示我的问题。希望对您理解有所帮助。 在此处输入图像描述

4

0 回答 0