Панель изменения размера, содержащая UserControl - PullRequest
1 голос
/ 11 ноября 2011

У меня есть UserControl, который содержит невидимые элементы управления, чтобы сделать их видимыми, размер UserControl изменяется.

Мне нужно изменить размер панели, содержащей UserControl, но я не знаю, как.

Ответы [ 5 ]

6 голосов
/ 12 ноября 2011

Это поведение хорошо обрабатывается классами Panel и Form без явного определения размера (и без ошибок макета, которые появляются, когда пользователь имеет монитор с высоким разрешением или использует настройки шрифта большого или очень большого размера.

1) Создайте форму с закрепленной панелью FlowLayout.

Docked

2) Установите для параметра AutoSize для параметра FlowLayoutPanel значение true, а для параметра AutoSizeMode - значение GrowAndShrink

GrowAndShrink

3) Добавьте свои панели и контент.

Design

4) Программно установите свойство Visible желаемой панели на скрытое

hiddenPanel.Visible = false;

hidden

5) или true

hiddenPanel.Visible = true;

Visible

2 голосов
/ 11 ноября 2011

Поместите этот код в usercontrol:

Size last = new Size(0, 0);

private void Me_Resize(object sender, System.EventArgs e)
{
    if (last != new Size(0, 0)) {
        this.Parent.Size = Size.Add(this.Parent.Size, Size.Subtract(this.Size, last));
    }
    last = this.Size;
}

Также сохранит поля (например, если панель больше вашего пользовательского элемента управления или имеет другие элементы управления помимо вашего пользовательского элемента управления.)

0 голосов
/ 07 марта 2016

Я знаю, что эта тема довольно старая, но я также хочу добавить свой метод ...

Если у вас есть Panel, содержащая UserControl, вы можете легко изменить ее размер. Управляет событием Form1_Resize.

 private void Form1_Resize(object sender, EventArgs e)
        {
            foreach (Control control in MasterPanel.Controls)
            {
                control.Size = MasterPanel.Size;
            }

        }

Просто убедитесь, что вы правильно привязали его содержимое.

0 голосов
/ 26 апреля 2013

Чтобы изменить размер элемента управления, вызовите шкалу для элемента управления.

           // To zoom in controls.
            foreach (Control c in MyFlowLayoutPanel.Controls)
            {
                PictureBox ptc = c as PictureBox;

                if (null != ptc)
                {
                    Point pt = new Point(2, 2);
                    SizeF sf = new SizeF(pt);
                    c.Scale(sf);
                }
            }

// Чтобы уменьшить элементы управления.foreach (элемент управления c в MyFlowLayoutPanel.Controls) {PictureBox ptc = c как PictureBox;

                                if (null != ptc)
                                {
                                    SizeF sf = new SizeF(0.5F, 0.5F);
                                    c.Scale(sf);
                                }
                            }
0 голосов
/ 11 ноября 2011

Если вы хотите изменить его размер до определенного размера, вы можете сделать это с помощью кода:

Size panelSize = new Size(500, 500);
usercontrol1.Parent.Size = panelSize;

Вы можете добавить этот код в usercontrol, если вы хотите изменить его размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...