Изменение цвета этикетки при нажатии

Привет, ребята, у меня есть простая проблема, если я нажму label1, он изменит цвет обратно на красный, но мой цвет фона по умолчанию прозрачен.

   private void label_Click(object sender, EventArgs e)
   {

       label1.BackColor = Color.Red;
   }

   private void label2_Click(object sender, EventArgs e)
   {
       label2.BackColor = Color.Red;
   }

что, если я снова нажму на ярлык, я хочу, чтобы он изменил цвет на прозрачный, как мне это закодировать? Заранее спасибо! :D

label.BackColor = Color.Transparent;

person Marilou Magat    schedule 21.10.2013    source источник
comment
если оператор сделает это   -  person Sriram Sakthivel    schedule 21.10.2013
comment
да, но как мне это сделать, я пробовал if(label1.click == true) ха-ха, и я чувствую себя глупо, кодируя это.   -  person Marilou Magat    schedule 21.10.2013
comment
Гленг сделал это за вас. stackoverflow.com/a/19498816/2530848   -  person Sriram Sakthivel    schedule 21.10.2013


Ответы (3)


Вам просто нужно перевернуть цвет на основе его текущего значения. Это можно сделать, выполнив:

label1.BackColor = label1.BackColor == Color.Red ? Color.Transparent : Color.Red;

Вышеупомянутое является conditional operator и в основном является просто сокращением для оператора if/else,

if (label1.BackColor == Color.Red)
    label1.BackColor = Color.Transparent
else
    label1.BackColor = Color.Red;
person gleng    schedule 21.10.2013
comment
@MarilouMagat Я обновил свой ответ для ясности. Надеюсь, поможет! - person gleng; 21.10.2013

Почему бы вам просто не добавить оператор if:

private void label_Click(object sender, EventArgs e)
{
    if(label1.BackColor == Color.Red)
    {
         label1.BackColor = Color.Transparent;
    }
    else
    {
        label1.BackColor = Color.Red;
    }
}
person tomsullivan1989    schedule 21.10.2013
comment
Изначально BackColor не будет Color.Transparent - person Sriram Sakthivel; 21.10.2013
comment
В вопросе говорится, что цвет фона по умолчанию прозрачен, но я все равно изменил свой ответ. - person tomsullivan1989; 21.10.2013

  private void label_Click(object sender, EventArgs e)
   {
       Label label1 = (Label)sender;
       if (label1.BackColor == Color.Red)
            label1.BackColor = Color.Transparent;
       else
            label1.BackColor = Color.Red;
   }

с помощью строки Label label1 = (Label)sender; Вы можете применить одно и то же событие для всех ваших ярлыков.

person Abdul Saleem    schedule 21.10.2013