Как мне закрепить пользовательский элемент управления в FlowLayoutPanel?

#user-controls #dock #docking #flowlayoutpanel

#пользовательские элементы управления #закрепить #закрепление #flowlayoutpanel

Вопрос:

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

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

Ответ №1:

Вы не можете закрепить что-либо внутри 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 событие.

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

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

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

Комментарии:

1. спасибо, брат ^ _^ мне удалось смоделировать это, изменив размер элементов управления при изменении размера FlowLayoutPanel 🙂 я знаю, что это может быть не лучшим решением, но оно выполнило свою работу: D