Проблема в том, что 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
и установите их один раз в конструкторе) или добавьте дополнительный атрибут логического флага для хранения текущего состояния.