点击图片框
本文关键字: | 更新日期: 2023-09-27 18:07:04
我已经为我的按钮创建了这个代码,但图像没有改变为什么?
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;
}
}
任何错误!
将方法重构为检查复选框是否被选中,而不是检查图像权益:
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;
}
问题是,Properties.Resources.vuoto
被实现为对ResourceManager.GetObject
的调用(只需选择它并点击F12
以查看Resources.Designer.cs
中的实现),并且每次调用该调用都会返回不同的图像实例。因此,您的if
条件始终为假。
您可以通过显示
的结果来测试此行为(Properties.Resources.vuoto == Properties.Resources.vuoto)
也总是返回false
。
if
条件下测试checkBox3.Checked
属性
if (!checkBox3.Checked) {
pictureBox94.Image = Properties.Resources.select;
checkBox3.Checked = true;
} else {
pictureBox94.Image = Properties.Resources.vuoto;
checkBox3.Checked = false;
}
其他解决方案是"缓存"的图像对象属性(即创建属性vuoto
和select
在你的Form
类和设置它们一次在你的构造函数),或有一个额外的布尔标志属性来存储当前状态