Проблемы с изменением размера в WinForms UserControl - PullRequest
1 голос
/ 01 февраля 2010

Некоторое время назад я опубликовал этот вопрос о попытке заставить Flowlayoutpanel автоматически изменить размер при пристыковке к верхней части контейнера.То, что я пытался сделать, это настроить горизонтальную (слева направо) панель разметки потока, охватывающую верхний край формы, и таблицу данных, занимающую оставшееся свободное пространство под панелью потока разметки.У меня возникли проблемы с настройкой свойства высоты панели Flowlayout для автоматического изменения размера так, как должно.Размещенный ответ отлично сработал для того, что я пытался выполнить, и это было здорово ...

Не удается оставить достаточно хорошо в одиночестве, сейчас я пытаюсь сделать еще один шаг и обернуть панель потока в пользовательский элемент управления.Однако я обнаружил, что это приводит к тому, что панель Flowlayout больше не изменяет свою высоту должным образом.

Вот первый макет, который прекрасно работает:

FlowLayoutPanel1 (Autosize = true, Dock = Top)
  ComboBox1
  ComboBox2
  ComboBox3
DataGridView1 (Dock = Fill)

И вот он с flowlayoutpanel, обернутым в UserControl:

UserControl (Autosize = true, Dock = Top)
  FlowLayoutPanel1 (Autosizse = true, Dock = Fill)
    ComboBox1
    ComboBox2
    ComboBox3
DataGridView1 (Dock = Fill)

По любой причине, flowlayoutpanel не делаетизмените его высоту должным образом при изменении размера формы.Это довольно легко воспроизвести.Кроме того, содержимое FlowLayoutPanel может быть чем угодно, не только ComboBox.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2010

Я думаю, что проблема в том, что у вас есть FlowLayoutPanel1.Dock = Fill, который отменяет его попытку автоматически изменить его высоту.

Исправление, вероятно, состоит в том, чтобы установить FlowLayoutPanel1.Dock = Top (как у вас было раньше), а затем обработать событие FlowLayoutPanel1.Resize, чтобы изменить размер вашего пользовательского элемента управления. По сути, вы вручную пытаетесь синхронизировать UserControl.Size с FlowLayoutPanel1.Size.

Возможно, есть более разумный способ сделать это, но, надеюсь, он выведет вас на правильный путь ...

0 голосов
/ 01 февраля 2010

Ваш UserControl имеет установленную ширину? Посмотрите в designer.cs, чтобы быть уверенным. Если это так, вам нужно сбросить это свойство.

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