Подтвердить что ты не робот

Winforms - как показать/скрыть элементы в дизайнере?

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

Моя проблема заключается в сборке панелей в дизайнере. Когда у меня есть 2+ полноэкранные панели, все они складываются друг на друга, и я не вижу тот, который я создал ранее. Есть ли какие-либо решения? Изменение видимости не влияет на просмотр дизайнеров. Подумайте об этом как о фотошопе, чтобы показывать/скрывать слои. Я использую Visual С# 2010 Express.

Спасибо заранее, Камиль

4b9b3361

Ответ 1

Несколько вариантов:

  • Используйте представление Document Outline (View --> Other Windows --> Document Outline), чтобы выбрать интересующую вас панель. Вы можете щелкнуть его правой кнопкой мыши и выбрать Bring to Front, чтобы поставить его перед всем остальным.
  • Хотя это, вероятно, не имеет отношения к тому, что вы делаете, вы можете рассмотреть возможность использования TabControl, с которым вы можете взаимодействовать визуально во время разработки. Это только разумное решение, если вы хотите, чтобы ваши пользователи могли вручную изменять, какую панель они просматривают.
  • Рассмотрите возможность перемещения панелей в пользовательские классы UserControl и работайте над ними отдельно. Если контент и логика этих панелей достаточно автономны, тогда вы можете сделать это в любом случае, чтобы лучше переделать свой код.

Добавление. Вы также можете использовать хак, который делает вкладки TabControl невидимыми для пользователя. Поместите a TabControl в вашу форму и во время выполнения установите высоту ItemSize на 1. Это делает практически невозможным изменение пользователем вкладок самостоятельно, но все же позволяет вам изменять видимую вкладку в дизайнере.

myTabControl.ItemSize = new Size(myTabControl.ItemSize.Width, 1);

Обратите внимание, что я назвал это взломом по какой-то причине: TabControl не предназначались для использования таким образом. Это что-то, что работает, но, как и все хаки, оно может сломаться в любое время, поэтому вы должны делать это только в крайнем случае (и не обвиняйте меня, если это вызывает головные боли позже...). Короче говоря, я не рекомендую этот хак, я предлагаю его только как возможность.

Ответ 2

Я использую "Привести вперед" или "Отправить назад" в разделе "Формат" > "Заказ" для управления подобным сценарием, но вы правы, это отвратительно, что видимость - это только время выполнения (AFAIK).

Приветствия

Ответ 3

Один из подходов, который я использовал в этой ситуации, - это использовать окно "Проводник документа", чтобы панель, над которой я работаю, спереди.

Ответ 4

Я не уверен в правильном способе сделать это, но то, что я делаю сам в этом случае, - это jyst make controls, очень маленький, а затем при запуске программы я меняю размеры и местоположения при запуске.

Ответ 5

Если это приемлемо для вас, подумайте об использовании элемента управления TabControl и поместите каждый из элементов управления Panel на другую вкладку. Затем вы можете скрыть и показать правильную страницу, переключившись между вкладками или программным удалением и добавив соответствующую вкладку в элемент управления.

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

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

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

Ответ 6

Итак, вы хотите, чтобы показать/скрыть панель в представлении конструктора VS (не только при запуске реального исполняемого файла)?

Будет что-то вроде this help?

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