Я создаю графический интерфейс WinForms, который должен быть независимым от разрешения (т. Е. Все элементы управления растягиваются/сжимаются во время пребывания на месте, независимо от разрешения пользователя).TableLayoutPanel растягивается, чтобы заполнить родительскую панель в форме
Моя проблема: по какой-то причине все мои элементы управления изменяются в размерах до тех пор, пока форма сокращается, а не растягивается.
Если пользователь изменяет размер окна, чтобы уменьшить его (как только я закончу, он будет заблокирован для максимизации, но для целей тестирования я оставил его изменчивым), все элементы управления в окне следуют примеру , Если пользователь растягивает окно за пределами его начального размера, элементы управления остаются на месте, что, в свою очередь, означает, что они больше не находятся в правильном положении, так как окно теперь больше. Они изменяют размер очень хорошо от очень маленьких, вплоть до их первоначального размера, а затем они просто останавливаются; в то время как окно продолжает расти.
Мой макет работает следующим образом:
Main form
--> 1x3 TableLayoutPanel
--> 1x1 TableLayoutPanel in center row of parent panel
--> User control that populates parent 1x1 TableLayoutPanel on button click
User Control
--> 1x1 TableLayoutPanel
--> Multiple TableLayoutPanel's laying out multiple controls inside parent 1x1 TableLayoutPanel
Все мои панели устанавливаются на якорь TOP/BOTTOM/LEFT/RIGHT
Я пробовал различные комбинации Авторазмера, растет стиль, док-станция и якорь для каждой основной панели, но не может показаться, что мои основные панели (например, панель, содержащая пользовательский элемент управления) имеют размер больше, чем их первоначальный размер.
Надеюсь, я описал свою проблему достаточно хорошо, чтобы понять, но в принципе; мой макет проекта состоит из множества TableLayoutPanels внутри eachother для каждого настраиваемого элемента управления, и этот пользовательский элемент управления заполняет 1x1 TableLayoutPanel внутри моей основной формы, которая действует как панель «Основной» для моего графического интерфейса. Затем пользователь выбирает, какой пользовательский элемент управления будет отображаться в основной форме, с кнопкой, расположенной в верхней строке родительской таблицы 1x3 TableLayoutPanel.
Позвольте мне знать, если мне нужно, чтобы объяснить это лучше для того, чтобы ответить
EDIT: Я обнаружил, если я установил AutoScaleMode
пользовательского элемента управления в Font
он будет изменять точно, как я этого хочу. Единственная проблема с этим решением заключается в том, что когда элемент управления загружается в форму, он слишком велик, и некоторые из них обрезаны краями моей основной формы. Как только я вручную изменяю размер формы (даже маленький бит), элемент управления исправляет себя до нужного размера в форме.
Таким образом, я чувствую, что я рядом, но не совсем там, как с готовым продуктом, пользователь не будет контролировать изменение размера окна, он будет вынужден максимизировать.
EDIT 2: Я попытался добавить это событие кнопки, которая отображает пользовательский элемент управления внутри панели:
MyUserControl MainPanelControls = new MyUserControl();
MainPanel.SuspendLayout();
MainPanel.Controls.Clear();
MainPanel.Controls.Add(MainPanelControls);
MainPanel.Dock = DockStyle.Fill; //This seems to have no effect
MainPanel.ResumeLayout(false);
Я должен также упомянуть, что все элементы управления на моей основной форме натяжкой должным образом в их TableLayoutPanels, это только пользовательский элемент управления, который не растягивает мимо это intitial размер внутри моей главной формы. – Patrick