Как нарисовать одну и ту же область с разными наборами элементов управления? - PullRequest
3 голосов
/ 03 февраля 2010

Я использую Winforms / C # .NET.

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

Я не могу выразить это ясно. Тесно связанное программное обеспечение, которое изображает то, что я хочу, - ccleaner см. изображение здесь: http://i.imagehost.org/0569/cc.gif альтернативный текст http://i.imagehost.org/0569/cc.gif

при выборе каждой вкладки / кнопки / (я не знаю, что это на самом деле) из опций на левой стороне ccleaner, реестра, задач, опций. Содержимое в красной рамке изменяется.

Это то, чего я точно хочу. Кроме того, как я могу получить такой вид?

Ответы [ 4 ]

1 голос
/ 03 февраля 2010

Мое решение немного сложнее, но создает приятный эффект.Сделайте каждую страницу, которую вы хотите показать, производной от UserControl и поместите все ее элементы управления на нее.Мои "вкладки" были фактически нарисованы владельцем ListView в режиме плитки.С рисунком владельца я добился хорошего эффекта наведения мыши на ListView.Когда выбор на ListView изменится, покажите соответствующую страницу.

0 голосов
/ 04 февраля 2010

Может быть два способа достичь этого

  1. Не очень эффективный:
    Возьмите элемент управления вкладками и добавьте вкладки для каждого действия кнопки (действие навигации слева). При нажатии кнопки навигации сделать видимой только одну вкладку и скрыть другие. Это достигнет того же эффекта.

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

0 голосов
/ 04 февраля 2010

Ну, , если вы амбициозны и хотите выйти на конечности , Я делаю это так .

По сути, я пишу то, что похоже на функцию C #, для создания элементов управления, которые мне нужны в любой момент времени.

Я говорю «похоже», потому что он использует специальную управляющую структуру, называемую Дифференциальное выполнение, которая позволяет вызывать ее в разных режимах.

  • В режиме Show он делает именно это - создает и размещает элементы управления.

  • В режиме стирания он делает противоположное, удаляя элементы управления, которые он там поместил ранее.

  • В режиме обновления он делает все, что нужно для постепенного изменения набора элементов управления от того, что было до того, что нужно.

  • В режиме «Событие» он обрабатывает входные события пользовательского интерфейса, направляя их на соответствующий элемент управления и делая то, что вы хотите.

Почему?

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

  • Нет ограничений на количество элементов управления, которые могут быть на экране, потому что, когда элементы управления не видны, они не занимают память. (И это автоматически, и тривиально, мусор собирает элементы управления.)

  • Процедура для рисования того, что вы хотите, способ легче написать, чем та, которая рисует, стирает, постепенно обновляет и обрабатывает события.

  • Кроме того, он обрабатывает условные выражения, подпрограммы, циклы и т. Д., Позволяя вам по-настоящему выразить то, что вы рисуете в окне, он живет в вашем коде и имеет доступ к вашей структуре данных, а также автоматически обрабатывает все виды привязки данных без необходимости кодирования.

Наш продукт имеет лот пользовательского интерфейса с миллионом опций. Я не мог сделать это по-другому.

0 голосов
/ 03 февраля 2010

Вы можете владелец рисовать вкладку управления / древовидного управления для достижения аналогичного результата

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