Member 13206672 Ответов: 2

Как изменить цвет фона флажка в C#?


У меня есть форма с вопросом с 2 ответами. И если я проверил правильный ответ, фон меняется на зеленый, но если я ошибаюсь, цвет фона меняется на красный. Но если я проверил и после этого снял флажок, то цвет становится прозрачным. Пожалуйста Хеллп

Что я уже пробовал:

я попробовал с
private void button1_Click(object sender, EventArgs e)
       {
           if (checkBox1.Checked == true && checkBox2.Checked == false)
           {
               if (checkBox1.Checked == true)
                   checkBox1.BackColor = System.Drawing.Color.Green;
               else checkBox1.BackColor = System.Drawing.Color.Transparent;
               if (checkBox2.Checked == true)
                   checkBox2.BackColor = System.Drawing.Color.Red;
               else checkBox2.BackColor = System.Drawing.Color.Transparent;
           }

но разве работа не хороша

2 Ответов

Рейтинг:
0

Rob Philpott

Не совсем понимаю, что вы пытаетесь сделать, но логика ошибочна.

Код выполняется только тогда, когда

if (checkBox1.Checked == true && checkBox2.Checked == false)

но тогда у вас есть:
if (checkBox2.Checked == true)

Чего никогда не случится.
...и
(checkBox1.Checked == true)

что всегда случается!


Рейтинг:
0

Robert Raboud

похоже, вы должны использовать переключатели, а не флажки.

Переключатели являются взаимоисключающими.

private void radioButton_CheckedChanged(object sender, EventArgs e)
 {
     if (this.radioButton1.Checked)
     {
         this.radioButton1.BackColor = System.Drawing.Color.Green;
     }
     else
     {
         this.radioButton1.BackColor = System.Drawing.Color.Transparent;
     }
     if (this.radioButton2.Checked)
     {
         this.radioButton2.BackColor = System.Drawing.Color.Red;
     }
     else
     {
         this.radioButton2.BackColor = System.Drawing.Color.Transparent;
     }
 }


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

возможно, лучше всего иметь отдельные события щелчка для каждого переключателя, чтобы снять флажок с другого

private void cbCorrect_Click(object sender, EventArgs e)
{
    if (this.cbCorrect.Checked)
    {
        this.cbCorrect.BackColor = System.Drawing.Color.Green;

        this.cbWrong.Checked = false;
        this.cbWrong.BackColor = System.Drawing.Color.Transparent;

    }
    else
    {
        cbCorrect.BackColor = System.Drawing.Color.Transparent;
    }
}

private void cbWrong_Click(object sender, EventArgs e)
{
    if (this.cbWrong.Checked)
    {
        this.cbWrong.BackColor = System.Drawing.Color.Red;

        this.cbCorrect.Checked = false;
        this.cbCorrect.BackColor = System.Drawing.Color.Transparent;

    }
    else
    {
        cbWrong.BackColor = System.Drawing.Color.Transparent;
    }

}