#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