У меня есть пользовательская форма с 4 панелями по краям.Я хотел бы привязать другую панель, которая будет содержать пользовательские элементы управления, к видимым краям формы.Как только это будет сделано, я бы хотел привязать неопределенное количество элементов управления к уже закрепленной панели.Я довольно новичок в этом, и я не знаю, что это лучший способ достичь моей цели - иметь список объектов, размер которых изменяется при изменении размера формы.Причина, по которой я работаю с этой точки зрения, заключается в том, что я хочу, чтобы объекты были активными, а не просто текстовыми строками.
Моя мысль примерно такая.
----------------------------------------
| Header Panel |
----------------------------------------
|| <--left panel right panel->||
|| [ user control object ]||
|| [ user control object ]||
|| [ user control object ]||
|| [ user control object ]||
----------------------------------------
| Bottom Panel |
----------------------------------------
В настоящее время я могу нарисовать панель, которая содержит объекты пользовательского элемента управления по желанию, но не меняет размер с родительским, и когда я пытаюсь привязать его к родительскому объекту, он привязывается кне то место.Я также пытался привязать объекты управления пользователя к панели управления пользователя, но они не меняют размеры вообще.
Итак, вот код для панели контейнера
//This is called after InitializeComponent(), I would assume the anchor would go
//in here somewhere, but I need the anchor to be offset by the bounds of the
//other panels as listed below.
private static void SetQuestionContainerBounds(SessionReviewForm instance)
{
instance.pnlQuestionContainer.Top = instance.HeaderPanel.Bottom;
instance.pnlQuestionContainer.Left = instance.LeftPanel.Right;
instance.pnlQuestionContainer.Width = instance.RightPanel.Left - instance.pnlQuestionContainer.Left;
instance.pnlQuestionContainer.Height = instance.StatusPanel.Top - instance.pnlQuestionContainer.Top;
}
После того, как я создаю форму и позиционирую pnlQuestionContainer, я затем начинаю создавать пользовательские элементы управления, называемые объектами базовых вопросов, привязывать их и добавлятьих в pnlQuestionContainer
private void DisplayData()
{
// tracks the number of questions, used in placement of objects
int questionCount = 0;
// if the session question is marked for review
// generate a new question object and place it.
foreach (SessionQuestion sq in thisSessionPart.SessionQuestions)
{
if(sq.MarkForReview)
{
BaseQuestionObject bqo = new BaseQuestionObject(sq, parentSession);
BaseQuestionObject.FitAndPlaceObject(pnlQuestionContainer, bqo, questionCount);
bqo.Anchor = (AnchorStyles.Left | AnchorStyles.Right);
pnlQuestionContainer.Controls.Add(bqo);
questionCount++;
}
}
}
Объект базового вопроса в данный момент состоит из трех частей.UserControl, групповое поле и метка.Все эти элементы настроены на автоматический размер с привязкой слева, справа, за исключением пользовательского элемента управления, так как я не могу установить это в окне свойств, но я думаю, что я устанавливаю его в вышеуказанном методе.
Текущие результаты состоят в том, что панель контейнера сначала отлично рисуется, но она никогда не изменяет размеры.Объекты вопросов рисуются в том же размере, в котором они были созданы, хотя это не максимальный или минимальный размер.
[РЕДАКТИРОВАТЬ] Проблема, с которой я столкнулся, заключалась в том, что стили якоря плохо играли с авторазмером.После выключения автоматического изменения размера и манипуляции с anchorStyles я смог получить желаемый результат.