Изменение размера элементов GUI с изменением размера формы - PullRequest
1 голос
/ 25 октября 2019

У меня есть следующая форма:

form:

Все надписи для текстовых полей должны оставаться с левой стороны формы, где они находятся. Два верхних текстовых поля должны оставаться близко к верху и левому краю формы, но должны меняться по ширине в соответствии с шириной формы при ее изменении.

Верхний край многострочного текстового поля должен оставаться вто же самое место относительно вершины формы, как и левый край. Размер должен быть изменен в соответствии с размером формы.

Каждая из кнопок должна оставаться в углах, где они находятся.

Когда высота формы уменьшается, многострочное текстовое поле должно быть «сжато»». Флажки также должны оставаться в том же положении.

Я пробовал множество подходов для достижения этой цели, но ни один из них не дал желаемого эффекта. Это включало панели раскладки таблиц и закрепление различных элементов внутри них. Я понял, что кнопки и два верхних текстовых поля, возможно, не нужно размещать внутри таблицы, и просто используйте якоря. Я успешно достиг этого, закрепив button1 слева и снизу и button2 справа и снизу. Ярлыки field1 ... field3 также находятся в соответствующих позициях и остаются там, где они должны быть при изменении размера формы. Эти ярлыки привязаны к верху и оставлены в настоящее время.

1 Ответ

2 голосов
/ 25 октября 2019

Это можно сделать, закрепив элементы управления следующим образом:

  • поля 'field1' и 'field2': слева, справа и сверху;

  • текстовое поле 'field3': слева, справа, сверху и снизу;

  • 'checkBox1' и 'checkBox2': слева и снизу;

  • 'button1': слева и снизу (вы уже получили это);

  • 'button2': справа и снизу (вы получили это тоже).

Ваши ярлыки, вероятно, в порядке, как есть.

Вы, наверное, уже разобрались с якорями, но в основном: если вы установили правильный элемент управления на элементе управления, вы говорите, что хотите, чтобы правая сторона этого элемента управления поддерживала такое же расстояние от правой стороны его контейнера. Если элемент управления не находится внутри панели, это будет правая сторона формы. Таким образом, если текстовое поле 'field1' находится в восьми единицах с правой стороны формы в конструкторе, оно останется на восемь единиц с правой стороны независимо от того, как вы изменили размер формы во время выполнения. Если вы закрепите левую и правую стороны, при изменении размера они будут растягиваться, поскольку это единственный способ сохранить одинаковые расстояния с обеих сторон.

Вы также захотите установить «MinimimSize» дляформы, чтобы предотвратить наложение нижних элементов управления на верхние элементы управления при уменьшении размера формы.

...