2013-07-04 2 views
1

Я использую этот код, связанный с PictureBox's Click событие, чтобы изменить изображение при нажатии на PictureBox.Изменить отмеченное состояние с изображением

private void pictureBox1_Click(object sender, EventArgs e) //domanda else if 
     { 
      if (checkBox1.Checked == false) 
      { 
       pictureBox1.Image = Properties.Resources.On; 
       checkBox1.Checked = true; 
      } 
      else 
      { 
       pictureBox1.Image = Properties.Resources.Off; 
       checkBox1.Checked = false; 
      } 
     } 

Это работает, но если у меня есть «на» изображение в PictureBox, щелкнув по нему не изменяет изображение, он по-прежнему «на» изображение. Я попробовал этот код, но он не работает для меня:

private void Form1_Load(object sender, EventArgs e) 
     {   
    if (pictureBox1.Image == Properties.Resources.On) 
        {       
         checkBox1.Checked = true; 
        } 
        else 
        {        
         checkBox1.Checked = false; 
        } 
} 

мне нужно изображение на = checkedbox Проверено изображение выкл = checkedbox не проверено

+0

«но не работает для меня» не помогает. Пожалуйста, объясни. – Blorgbeard

+0

ничего .. состояние изображения не изменилось, нет ошибки в коде – Federal09

+0

Первый код должен работать, я не могу понять эти слова вашего '' Это работает, но если у меня есть изображение «on» в PictureBox, не изменить изображение, это все еще «на» изображении? Любые разъяснения? –

ответ

2

Когда вы делаете pictureBox1.Image == Properties.Resources.On вы проверяете, если они равный одной и той же ссылке. Ответ в том, что их нет, поэтому, хотя изображения одинаковы, фактические ссылки не являются. Вместо этого вы можете использовать свойство PictureBox Tag для хранения текущих данных изображения. Например

if (checkBox1.Checked == false) 
{ 
    pictureBox1.Image = Properties.Resources.On; 
    pictureBox1.Tag = "ON"; 
    checkBox1.Checked = true;    
} 
else 
{ 
    pictureBox1.Image = Properties.Resources.Off; 
    pictureBox1.Tag = "OFF"; 
    checkBox1.Checked = false; 
} 

Вы можете прочитать эту метку, когда вы хотите увидеть, что изображение имеет

if (pictureBox1.Tag.ToString() == "ON") 
    checkBox1.Checked = true; 
else        
    checkBox1.Checked = false; 

В качестве примечания, то Tag свойство имеет object типа, так что вам не нужно хранить и сравните строки, вы можете добавить перечисления, например. (Хотя в этом случае строка должна быть достаточной).

Смежные вопросы