Как заблокировать контролы при помощи переключателей Winforms C#

У меня есть форма, на которой расположено множество гиперссылок с переходом на другую форму с теорией, где при нажатии на кнопку открывается тест. введите сюда описание изображения введите сюда описание изображения На форме теста есть три вкладки TabControl.
введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения Также у меня есть переключатели типа bool AnsweredQuestion1, AnsweredQuestion2 и AnsweredQuestion3 (Таких еще несколько, поскольку вопросов больше и номера переключателей соответственно равны номерам вопросов), которые становятся true или false в зависимости от того, правильно ли были введены ответы на эти вопросы. Я решил сделать такую логику, что если пользователь отвечает на вопрос правильно, то при повторной загрузке формы с тестом по выбранному разделу данный вопрос помечается решенным, баллы за него засчитываются один раз и он может пролистать дальше к тому вопросу, который был решен неправильно, чтобы до конца пройти выбранный раздел. введите сюда описание изображения Однако поскольку форма одна и на нее грузятся разные вопросы с ответами из базы данных, он при полном прохождении одного из разделов помечает пройденными и все остальные разделы введите сюда описание изображения Хотел бы спросить, есть ли какие-либо варианты решения с самими переключателями, чтобы не менять ничего в базе и на форме, поскольку времени остается мало... Вижу, что дело в условии, но как его лучше поменять, чтобы блокировать контролы к разным разделам не могу придумать...

private void TestForm_Load(object sender, EventArgs e)
    {
        label4.Visible = false;
        label5.Visible = false;
        label6.Visible = false;
        switch (Test.Theme_ID)
        {
            case 1:
                if (Test.AnsweredQuestion1 == true || Test.AnsweredQuestion4 == true || Test.AnsweredQuestion7 == true)
                {
                    radioButton1.Enabled = false;
                    radioButton2.Enabled = false;
                    radioButton3.Enabled = false;
                    radioButton4.Enabled = false;
                    label4.Visible = true;
                }
                break;
            case 2:
                if (Test.AnsweredQuestion2 == true || Test.AnsweredQuestion5 == true || Test.AnsweredQuestion8 == true)
                {
                    textBox1.Enabled = false;
                    label5.Visible = true;
                }
                break;
            case 3:
                if (Test.AnsweredQuestion3 == true || Test.AnsweredQuestion6 == true || Test.AnsweredQuestion9 == true)
                {
                    radioButton5.Enabled = false;
                    radioButton6.Enabled = false;
                    radioButton7.Enabled = false;
                    radioButton8.Enabled = false;
                    label6.Visible = true;
                }
                break;
        }
        Text = $"Вопросы к теме: {User.header}";
        GetData();
        Output_Data();
    }

Пример кнопки "далее" для считывания вариантов ответа на первой странице TabControl:

      private void RBnext_Click(object sender, EventArgs e)
    {
        checkCancel = false;
        if (Test.AnsweredQuestion1 == true || Test.AnsweredQuestion4 == true || Test.AnsweredQuestion7 == true)
        {
            tabControl1.SelectTab("tabPage2");
        }
        else 
        {
            if (!radioButton1.Checked && !radioButton2.Checked && !radioButton3.Checked && !radioButton4.Checked)
                MessageBox.Show("Вы не выбрали вариант ответа!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                GetAnswers();
                switch (Test.Theme_ID)
                {
                    case 1:
                        if ((radioButton1.Checked && radioButton1.Text == Test.Answer1) ||
                    (radioButton2.Checked && radioButton2.Text == Test.Answer1) ||
                    (radioButton3.Checked && radioButton3.Text == Test.Answer1) ||
                    (radioButton4.Checked && radioButton4.Text == Test.Answer1))
                        {
                            if (Test.AnsweredQuestion1 == false)
                            {
                                MessageBox.Show("Верно!");
                                User.Progress += 11.11;
                                tabControl1.SelectTab("tabPage2");
                                Test.AnsweredQuestion1 = true;
                            }
                        }
                        else
                        {
                            MessageBox.Show("Неверно...");
                            tabControl1.SelectTab("tabPage2");
                            Test.AnsweredQuestion1 = false;
                        }
                        break;
                    case 2:
                        if ((radioButton1.Checked && radioButton1.Text == Test.Answer4) ||
                    (radioButton2.Checked && radioButton2.Text == Test.Answer4) ||
                    (radioButton3.Checked && radioButton3.Text == Test.Answer4) ||
                    (radioButton4.Checked && radioButton4.Text == Test.Answer4))
                        {
                            if (Test.AnsweredQuestion4 == false)
                            {
                                MessageBox.Show("Верно!");
                                User.Progress += 11.11;
                                tabControl1.SelectTab("tabPage2");
                                Test.AnsweredQuestion4 = true;
                            }
                        }
                        else
                        {
                            MessageBox.Show("Неверно...");
                            tabControl1.SelectTab("tabPage2");
                            Test.AnsweredQuestion4 = false;
                        }
                        break;
                    case 3:
                        if ((radioButton1.Checked && radioButton1.Text == Test.Answer7) ||
                    (radioButton2.Checked && radioButton2.Text == Test.Answer7) ||
                    (radioButton3.Checked && radioButton3.Text == Test.Answer7) ||
                    (radioButton4.Checked && radioButton4.Text == Test.Answer7))
                        {
                            if (Test.AnsweredQuestion7 == false)
                            {
                                MessageBox.Show("Верно!");
                                User.Progress += 11.11;
                                tabControl1.SelectTab("tabPage2");
                                Test.AnsweredQuestion7 = true;

                            }
                        }
                        else
                        {
                            MessageBox.Show("Неверно...");
                            tabControl1.SelectTab("tabPage2");
                            Test.AnsweredQuestion7 = false;
                        }
                        break;
                }
            }
        }  
    }

Для остальных двух вкладок код аналогичный, просто используются другие переключатели с другими номерами под номер вопроса.


Ответы (0 шт):