Winforms - как показать/скрыть элементы в дизайнере?
Я пытаюсь создать приложение с несколькими страницами, используя winforms. Я решил использовать несколько панелей - каждая панель представляет собой разную страницу, поэтому я могу переключаться между ними, когда мне нужно отображать разные контенты.
Моя проблема заключается в сборке панелей в дизайнере. Когда у меня есть 2+ полноэкранные панели, все они складываются друг на друга, и я не вижу тот, который я создал ранее. Есть ли какие-либо решения? Изменение видимости не влияет на просмотр дизайнеров. Подумайте об этом как о фотошопе, чтобы показывать/скрывать слои. Я использую Visual С# 2010 Express.
Спасибо заранее,
Камиль
Ответы
Ответ 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, который обеспечивает этот тип функциональности. Нажмите здесь для получения дополнительной информации.