Пользовательский элемент управления переключателем панели для Winform в .net? - PullRequest
3 голосов
/ 01 октября 2009

Это вопрос .net winform UI.

Во многих случаях мы хотим спроектировать пользовательский интерфейс таким образом, чтобы у вас было несколько вариантов, и в зависимости от выбранного вами варианта, для вас настроен другой подробный пользовательский интерфейс. Например, представьте себе регистрацию пользователя: в зависимости от выбранного вами местоположения вас могут попросить ввести другую информацию. Обычно, когда я создаю форму для такой цели, я создаю пустую панель для размещения места на главной форме. И я создам один пользовательский элемент управления для каждого пользовательского интерфейса. Когда форма будет загружена, я создам экземпляры пользовательских элементов управления (представляющих подробный пользовательский интерфейс на основе параметров), закреплю их на панели и скрою ненужные элементы. Когда пользователь меняет свою опцию (возможно, через выпадающий список или через набор переключателей), я программно решаю, какой пользовательский элемент управления должен отображаться, а остальные должны быть скрыты. Пока все хорошо.

Но у этого решения есть проблема: когда вы открываете форму в конструкторе форм VS, все, что вы видите, это пустая панель, и вы не представляете, как будет выглядеть заполненный пользовательский элемент управления. Если другой программист откроет вашу форма у дизайнера, он не будет знать, что здесь происходит, пустая панель? Затем он должен перейти к вашему коду и узнать пользовательские элементы управления.

Итак, у нас есть пользовательский элемент управления, который ведет себя подобно tabcontrol, так что все пользовательские элементы управления могут быть визуально организованы в конструкторе во время разработки? Конечно, вы скажете, тогда используйте tabcontrol. Но очевидно, что цель не та же, что у tabcontrol, а скорее tabcontrol без кнопок вкладок сверху. Вы можете попросить меня написать несколько строк кода, чтобы скрыть кнопки вкладок на вкладке управления. Да, мы можем это сделать, но я обнаружил, что после скрытия кнопок вкладок, вокруг элемента управления вкладками и других элементов управления будет некоторое пространство, и внешний вид будет не идеальным. И визуально кнопки вкладок занимают больше места, чем сами вкладки, поэтому их скрытие создаст некоторую проблему с полями макета.

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

Ответы [ 2 ]

2 голосов
/ 13 октября 2009

Но у этого решения есть проблема: когда вы открываете форму в конструкторе форм VS, все, что вы видите, это пустая панель, и вы не представляете, как будет выглядеть заполненный пользовательский элемент управления. форма у дизайнера, он не будет знать, что здесь происходит, пустая панель? Затем он должен перейти к вашему коду и узнать пользовательские элементы управления.

Мы также делаем то же самое повсюду. Согласитесь, если вы продолжите добавлять свои панели в форму, у вас возникнет эта проблема. Простой ответ - просто не делай этого. Создайте UserControl, полученный из Panel в вашем проекте. Затем в вашей форме добавьте пользовательский элемент управления.

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

0 голосов
/ 12 октября 2009

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

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