点击图片框

本文关键字: | 更新日期: 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;
}

其他解决方案是"缓存"的图像对象属性(即创建属性vuotoselect在你的Form类和设置它们一次在你的构造函数),或有一个额外的布尔标志属性来存储当前状态

相关文章:
  • 没有找到相关文章