调整控件的大小在运行时

时间:2010-02-22 05:23:51

标签: c# winforms controls resize picturebox

当鼠标光标拖动控件的右下角时,是否有人知道任何可以在运行时调整图片框大小的示例代码?任何帮助都将不胜感激。

谢谢

4 个答案:

答案 0 :(得分:7)

答案 1 :(得分:1)

您可以使用此“自制”课程。为了正常运行,你可以在其中放置一个容器和一个resizer元素,就像一个用作调整大小边框的瘦图像。 controlToResize是容器本身。你可以把你想要的一切都放在控制之内。 例如:

ControlResizer.Init(myPictureBox, myTableLayoutPanel, ControlResizer.Direction.Vertical, Cursors.SizeNS);

这是班级。

class ControlResizer
{
    public enum Direction
    {
        Horizontal,
        Vertical
    }

    public static void Init(Control resizer, Control controlToResize, Direction direction, Cursor cursor)
    {
        bool dragging = false;
        Point dragStart = Point.Empty;
        int maxBound;
        int minBound;

        resizer.MouseHover += delegate(object sender, EventArgs e)
        {
            resizer.Cursor = cursor;
        };

        resizer.MouseDown += delegate(object sender, MouseEventArgs e)
        {
            dragging = true;
            dragStart = new Point(e.X, e.Y);
            resizer.Capture = true;
        };

        resizer.MouseUp += delegate(object sender, MouseEventArgs e)
        {
            dragging = false;
            resizer.Capture = false;
        };

        resizer.MouseMove += delegate(object sender, MouseEventArgs e)
        {
            if (dragging)
            {
                if (direction == Direction.Vertical)
                {
                    minBound = resizer.Height;
                    maxBound = controlToResize.Parent.Height - controlToResize.Top - 20;
                    controlToResize.Height = Math.Min(maxBound , Math.Max(minBound, controlToResize.Height + (e.Y - dragStart.Y)) );
                }
                if (direction == Direction.Horizontal)
                {
                    minBound = resizer.Width;
                    maxBound = controlToResize.Parent.Width - controlToResize.Left - 20;
                    controlToResize.Width = Math.Min(maxBound, Math.Max(minBound, controlToResize.Width + (e.X - dragStart.X)));
                }
            }
        };
    }
}

答案 2 :(得分:1)

使用

  

<强> ControlMoverOrResizer

this article中的

类,您只需使用一行代码就可以在运行时进行可移动和可调整大小的控制! :) 例如:

ControlMoverOrResizer.Init(button1);   

现在 button1 是一个可移动且可调整大小的控件!

答案 3 :(得分:0)

从CP尝试此链接。您可以将它用作参考。 我认为代码适合初学者。 http://www.codeproject.com/Tips/743923/Csharp-Automatically-Resize-Controls-Runtime