У меня есть приложение WinForms, которое на данный момент полностью функционально, около 15-20 элементов. Я хотел бы иметь возможность переключаться между двумя представлениями: «расширенным» и другим «простым».
«Расширенный» вид будет таким же, как сейчас, «простой» вид скроет все, кроме одного элемента управления, и добавит 5 дополнительных.
Как лучше всего это сделать? Я думаю, что простая установка свойств .Visible
одно за другим, чтобы скрыть материал, не будет хорошей практикой. Я также не хотел бы дублировать элементы управления или код.
Я, очевидно, должен был подумать об этом вначале, но эта потребность только что пришла ко мне. Будем признательны за любые указатели в правильном направлении.
2 ответа
Это то, чем я закончил. У меня есть две панели одинакового размера и положения, и axWindowsMediaPlayer
- это элемент управления, который я хотел использовать на обеих:
if (panelExtendedLayout.Visible)
{
panelSimpleLayout.Visible = false;
panelExtendedLayout.Visible = true;
panelExtendedLayout.Controls.Remove(axWindowsMediaPlayer);
panelSimpleLayout.Controls.Add(axWindowsMediaPlayer);
}
else
{
panelSimpleLayout.Visible = true;
panelExtendedLayout.Visible = false;
panelExtendedLayout.Controls.Remove(axWindowsMediaPlayer);
panelSimpleLayout.Controls.Add(axWindowsMediaPlayer);
}
Это работает и выглядит довольно плавно, видео продолжает воспроизводиться, а все остальные элементы управления появляются / исчезают одним нажатием кнопки. У меня была начальная проблема, когда panelSimiple
был установлен как дочерний элемент panelExtended
из-за того, что я перетащил его на то же место, мне пришлось отредактировать это в коде дизайна.
Добавьте в свое приложение 2 элемента управления Panel и поместите все «простые» элементы управления на одну панель, а все «расширенные» элементы управления - на вторую.
Panel panelSimple = new Panel();
panelSimple.Location = new Point(1,1);
panelSimple.Size = new Size(500,500);
panelSimple.Controls.Add(simpleTexbox);
panelSimple.Controls.Add...
Panel panelExtended= new Panel();
panelExtended.Location = new Point(1,1);
panelExtended.Size = new Size(500,500);
panelExtended.Controls.Add(extendedButton);
panelExtended.Controls.Add...
Затем просто установите флаг .Visible для панелей на false или true в зависимости от того, что вам нужно (вам нужно убедиться, что оба они не будут видны одновременно или невидимы в этом отношении)
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
Panel
управление контейнером могло бы помочь в этом. Вы можете показать и скрыть панель в соответствии с вашими требованиями.