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

В моем приложении Windows

У меня есть обычная панель внутри панели потока.

На этой обычной панели у меня есть некоторые элементы управления вводом (например, метки, текстовое поле...)

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

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

кто-нибудь знает, что здесь не так?

Спасибо!


person huhooh30    schedule 13.04.2011    source источник


Ответы (2)


Я столкнулся с той же проблемой. Судя по всему, элементы управления в FlowLayoutPanel имеют размер в соответствии с самым широким элементом управления на этой панели. Я решил эту проблему, переопределив событие «Resize» в FlowLayoutPanel и изменив один из элементов управления относительно размера FlowLayoutPanel:

private void RulesPanel_Resize(object sender, EventArgs e)
{
    FlowLayoutPanel panel = (FlowLayoutPanel)sender;
    button_in_panel.Width = panel.Width - 50;
}

Как только один установлен, остальные изменяются должным образом. Это также верно для тех, у которых указаны Anchors.

person NeoStar    schedule 05.05.2014

В следующем посте Ленни уже ответил на вопрос

cannnot-resize-child-controls-in-a-flowlayoutpanel-control< /а>

или это:

flowlayoutpanel-issues

Так что я думаю, что нет никакого способа. Для чего именно вам нужен этот контроль?

person SwissGuy    schedule 13.04.2011
comment
Я делаю форму, которая имеет верх (панель A) и низ (панель B)... пользователь может свернуть панель A, поэтому я поместил эти 2 панели в панель flowlayout. Когда я отключу видимость панели A, панель B автоматически переместится вверх, чтобы заполнить пространство... Надеюсь, кто-нибудь предложит мне альтернативу для этого случая, спасибо! - person huhooh30; 13.04.2011
comment
Мое предложение состоит в том, чтобы удалить этот элемент управления. И добавьте функцию, например VisibleChanged(). Там вы можете проверить, видна ли панель или нет, и установить положение вашей панели B. Теперь вы можете просто вызвать VisibleChanged() в функции сворачивания. - person SwissGuy; 13.04.2011