我已经为我的按钮创建了这个代码,但图片不会改变原因吗?
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;
}
}
任何错误!
答案 0 :(得分:4)
重构您的方法以检查天气检查复选框,而不是检查图像权益:
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;
}
答案 1 :(得分:2)
问题是,Properties.Resources.vuoto
是通过调用ResourceManager.GetObject
来实现的(只需选择它并点击F12
即可查看Resources.Designer.cs
中的实施情况),此调用每次调用时返回一个不同的图像实例。因此,您的if
条件始终为false。
您可以通过显示
的结果来测试此行为(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
并在构造函数中设置它们一次),或者另一个布尔标志属性,用于存储当前状态。