PictureBox при клике - PullRequest
       2

PictureBox при клике

1 голос
/ 28 августа 2011

Я создал этот код для моей кнопки, но изображение не меняется, почему?

private void pictureBox94_Click(object sender, EventArgs e)
        {
            if (pictureBox94.Image == Properties.Resources.vuoto)
            {
                pictureBox94.Image = Properties.Resources.select;
                checkBox3.Checked = true;
            }
            else
            {
                pictureBox94.Image = Properties.Resources.vuoto;
                checkBox3.Checked = false;
            }
        }     

любая ошибка!

Ответы [ 2 ]

4 голосов
/ 28 августа 2011

Измените ваш метод проверки, установлен ли флажок вместо проверки эквити изображения:

private void pictureBox94_Click(object sender, EventArgs e)
{
    if (!checkBox3.Checked)
    {
        pictureBox94.Image = Properties.Resources.select;
    }
    else
    {
        pictureBox94.Image = Properties.Resources.vuoto;
    }

    checkBox3.Checked = !checkBox3.Checked;
}
2 голосов
/ 28 августа 2011

Проблема в том, что Properties.Resources.vuoto реализован как вызов ResourceManager.GetObject (просто выберите его и нажмите F12, чтобы увидеть реализацию в Resources.Designer.cs), и этот вызов возвращает каждый раз другой экземпляр изображения, вызываемый,Следовательно, ваше условие if всегда ложно.

Вы можете просто проверить это поведение, показав результат

(Properties.Resources.vuoto == Properties.Resources.vuoto)

, который также всегда возвращает false.

Итак, самый простой способ решить вашу проблему - это проверить свойство checkBox3.Checked в вашем if условии как

if (!checkBox3.Checked) {
  pictureBox94.Image = Properties.Resources.select;
  checkBox3.Checked = true;
} else {
  pictureBox94.Image = Properties.Resources.vuoto;
  checkBox3.Checked = false;
}

Другими решениями будет «кэширование» изображения в атрибутах объекта (т.е. создайте атрибуты vuoto и select в вашем классе Form и установите их один раз в конструкторе) или добавьте дополнительный атрибут логического флага для хранения текущего состояния.

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