Изменение размеров элементов управления во время выполнения - PullRequest
5 голосов
/ 22 февраля 2010

Кто-нибудь знает о каком-либо образце кода, расположенном где-нибудь, который позволил бы мне изменить размер окна рисунка во время выполнения, когда курсор мыши перетаскивает нижний правый край элемента управления? Будем благодарны за любую помощь.

Спасибо

Ответы [ 4 ]

1 голос
/ 11 января 2014

с использованием

ControlMoverOrResizer

класс в этой статье вы можете делать подвижные и изменяемые размеры управления во время выполнения только с помощью строки кода! :) Пример:

ControlMoverOrResizer.Init(button1);   

и теперь button1 - это подвижный и изменяемый размер элемента управления!

1 голос
/ 23 января 2013

Вы можете использовать Используйте этот «домашний» класс. Для правильного функционирования у вас должен быть контейнер и элемент изменения размера внутри него, как тонкое изображение, работающее как граница изменения размера. 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)));
                }
            }
        };
    }
}
0 голосов
/ 15 марта 2014

Попробуйте эту ссылку от CP. Вы можете использовать его в качестве справочного материала. Код для начинающих, я думаю. http://www.codeproject.com/Tips/743923/Csharp-Automatically-Resize-Controls-Runtime

...