Пользовательские элементы управления неправильно помещаются на экране - PullRequest
0 голосов
/ 10 апреля 2010

Мое приложение имеет несколько элементов управления. Как и на одном экране, TreeView расположен слева, GridView с постраничным отображением посередине и 4 кнопками справа. Элементы управления правильно отображаются, когда форма находится в развернутом состоянии, но если я ее минимизирую, элементы управления не умещаются на экране должным образом.

Я пробовал использовать разные приемы, такие как макет таблицы. В dat я добавил панель и т. Д. ...

Но я не смог решить проблему.

Как я могу создать такой тип экранов, который подходит независимо от размера моего окна?

Спасибо

1 Ответ

2 голосов
/ 27 апреля 2010

У меня была такая же проблема некоторое время назад. В моем случае у меня был Button и ListView внутри GroupBox, который был внутри SplitContainer, который был внутри UserControl на TabControl. Я хотел, чтобы кнопка в правом верхнем углу была расположена и закреплена, а ListView занял оставшееся место, так что я не мог закрепить ее. Вместо этого он был закреплен во всех четырех местах.

В моем случае моя кнопка и вид списка работали и работали правильно в конструкторе, но в моем работающем приложении кнопка была расположена далеко справа, а размер ListView также имел слишком большую ширину.

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

Итак, я заставил его работать и начал с чего-то другого, что я должен был сделать в своем приложении. Через некоторое время я получил запрос на новую функцию, и мне понадобилась еще одна кнопка в этой грязной штуке. На этот раз я полностью перестроил элементы графического интерфейса в новом пользовательском контроле, чтобы посмотреть, не появится ли проблема снова. К моему изумлению, эта насмешка с графическим интерфейсом вела себя как ожидалось.

В моем коде я ничего не делал об изменении местоположения, размера, якорей, доков и т. Д. Поэтому проблема должна была быть в коде InitializeComponents(), созданном дизайнером.

Я начал с различий в обеих версиях и не увидел больших отличий (их было много, но только мелкие, такие как размер, местоположение или название). Поэтому я начал вставлять код из моего сумасшедшего пользовательского контроля в макет и запускать макет в моем приложении. После нескольких копий проблема также появляется в моем макете, поэтому я получил основную причину проблемы.

Как вы думаете, какое свойство привело к сумасшедшему поведению?
Это был MinimumSize моего SplitContainer !

Таким образом, чтобы получить истинную причину вашей проблемы, вы должны начать сначала с пустого UserControl (или формы) и просто поместить на него все элементы с требуемым поведением (размер, местоположение, привязка, док).

Ничего больше!

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

...