Тема: умова if при натисканні на radiobutton

Потрібно реалізувати наступне: є 7 radiobutton та 7 panel. Потрібно написати умову якусь, щоб при натисканні на radiobutton1, на формі показувалась panel1, усі інші panel приховуються. При натисканні на radiobutton2, відображалась б panel2, а попередня, яка відобразилась, та всі інші, стали прихованими і тд. З самого початку для всіх panel властивість Visible = false.

2

Re: умова if при натисканні на radiobutton

А питання в чому? Документацію radiobutton чи panel знайти не можете?

3

Re: умова if при натисканні на radiobutton

Не можу правильно реалізувати подію так, щоб при натисканні на певну радіокнопку відобрабражалась відповідна панелька. Усі компоненти розташовані на конструкторі формі вже. Просто потрібно реалізувати перемикання панелей при натисканні на ту чи іншу радуокнопку.
Писала так:

if (radiobutton1.Checked) 
   {
      panel1.Visible = true;
   }
else 
   {
      panel1.Visible = false;
   }

і так для кожної радіокнопки відповідно. Але програма працює не коректно. Виконується умова для першої радіокнопки. Тобто, при натисканні на radiobutton1, panel1 відображається, при натисканні на radiobutton2 чи будь-яку іншу радіокнопку, panel1 не відображається, але і іншу панелі не відображаються, як повинні. Сподіваюсь все зрозуміло написала..

4

Re: умова if при натисканні на radiobutton

Ну так треба їх усіх відображати/ховати. Ви ж це в обробнику OnClick для radiobutton пишете? Найтупіший спосіб - це

if (radiobutton1.Checked)
   {
      panel1.Visible = true;
      panel2.Visible = false;
      panel3.Visible = false;
      panel4.Visible = false;
      panel5.Visible = false;
      panel6.Visible = false;
      panel7.Visible = false;
   }

і т.д.
Якщо ви запхаєте всі кнопки і панелі у відповідні масиви, то можна буде це в циклі обробляти.

5

Re: умова if при натисканні на radiobutton

О, ось вам єдиний обробник для усіх кнопок і панелей:

      panel1.Visible = radiobutton1.Checked;
      panel2.Visible = radiobutton2.Checked;
      panel3.Visible = radiobutton3.Checked;
      panel4.Visible = radiobutton4.Checked;
      panel5.Visible = radiobutton5.Checked;
      panel6.Visible = radiobutton6.Checked;
      panel7.Visible = radiobutton7.Checked;
Подякували: leofun01, ira.emelyanova.062

6 Востаннє редагувалося leofun01 (06.01.2023 19:54:52)

Re: умова if при натисканні на radiobutton

Я би загнав їх в словник (або в будь-яку колекцію), щоб змінювати видимість тільки 2-х панелів.

public partial class FormMain : Form {
    private Panel _active_panel;
    private Dictionary<RadioButton, Panel> _dictionary;
    public FormMain() {
        InitializeComponent();
        _active_panel = panel1;
        _dictionary = new Dictionary<RadioButton, Panel>() {
            { radioButton1, panel1 },
            { radioButton2, panel2 },
            { radioButton3, panel3 },
            { radioButton4, panel4 },
            { radioButton5, panel5 },
            { radioButton6, panel6 },
            { radioButton7, panel7 },
        };
        foreach(var rb in _dictionary.Keys)
            rb.CheckedChanged += radioButton_CheckedChanged;
    }
    private void radioButton_CheckedChanged(object o, EventArgs e) {
        RadioButton rb = o as RadioButton;
        if(rb == null) return;
        SuspendLayout();
        _active_panel.Visible = false;
        _active_panel = _dictionary[rb];
        _active_panel.Visible = rb.Checked;
        ResumeLayout(false);
    }
}
Подякували: ira.emelyanova.061