Как закрепить UserControl в FlowLayoutPanel? - PullRequest
1 голос
/ 24 октября 2011

У меня есть FlowLayoutPanel и UserControl.

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

1 Ответ

3 голосов
/ 05 декабря 2011

Вы не можете закрепить что-либо внутри FlowLayoutPanel, оно просто игнорируется.

Проверьте ответ здесь явно опубликовано командой Microsoft.

Они говорят:

FlowLayoutPanel использует самый большой элемент управления для эффективного определения столбца / строки в нем.Приведенный ниже код устанавливает размер первого элемента управления в соответствии с шириной FLP, чтобы получить макет, аналогичный тому, который вы хотите.

    private void flowLayoutPanel1_Layout(object sender, LayoutEventArgs e)
    {
        flowLayoutPanel1.Controls[0].Dock = DockStyle.None;
        for (int i = 1; i < flowLayoutPanel1.Controls.Count; i++)
        {
            flowLayoutPanel1.Controls[i].Dock = DockStyle.Top;
        }
        flowLayoutPanel1.Controls[0].Width = flowLayoutPanel1.DisplayRectangle.Width - flowLayoutPanel1.Controls[0].Margin.Horizontal;

    }

Главное - использовать событие Layout.

Это решение работало для меня до определенного момента.Ваши UserControls должны иметь AutoSize выключенным / оставаться одинакового размера.

В моем случае я хотел включить AutoSize, чтобы позволить UserControl расширяться / сжиматься вертикально при заполнении ширины FlowLayoutPanel,

Мне пришлось искать другое решение.Но вышесказанное может помочь вам в вашем случае.

...