Показать некоторые элементы управления на основе выбора переключателя

#c# #winforms

#c# #winforms

Вопрос:

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

У меня есть группа переключателей с 3 вариантами. В зависимости от выбранного параметра я должен показать следующий набор еще нескольких параметров. Правильный ли способ сделать это — поместить несколько Panel разных кнопок друг на друга, сделать все скрытыми и не показывать ничего, кроме одного, при выборе переключателя из первой группы или есть более стандартный способ?

Комментарии:

1. Будьте осторожны при наложении панели с помощью конструктора. Вы можете непреднамеренно сделать панель дочерней для другой панели. Лучше оставить панели в разных положениях, оставив только одну в правильном положении. В событии Form_Load или после InitializeComponent переместите другие панели точно над местоположением первой

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

Ответ №1:

Кажется, это правильный способ справиться с этим сценарием. Однако я не рекомендую перекрывать панели конструктором форм. Существует большая вероятность того, что вы непреднамеренно сделаете панель дочерней для другой панели.
Я предпочитаю оставлять панели в разных положениях, только одну в правильном положении.
В событии Form_Load или после InitializeComponent я перемещаю другие панели точно по местоположению первой

Так, например

 public class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        panel2.Location = panel1.Location;
        .....
    }
}
  

Комментарии:

1. Я бы все равно сделал: panel1.Visible = false; на всякий случай, если порядок Z будет увеличен.

2. Ну, это можно было бы оставить в конструкторе. Каждая панель начинается с Visible = False, если вы не хотите, чтобы она отображалась по умолчанию.

3. Нет, если он проектировал панели с дизайнером… Они видны по умолчанию.

4. Мы говорим то же самое. Просто я подумал, что, когда он говорит, что все панели скрыты , он делает это с помощью дизайнера.

5. Большое спасибо, это сделало это!