1

我使用绑定到PictureBox'sClick事件的这段代码在单击 时更改图像PictureBox

private void pictureBox1_Click(object sender, EventArgs e) //domanda else if
        {
            if (checkBox1.Checked == false)
            {
                pictureBox1.Image = Properties.Resources.On;
                checkBox1.Checked = true;
            }
            else
            {
                pictureBox1.Image = Properties.Resources.Off;
                checkBox1.Checked = false;
            }
        }

它可以工作,但是如果我在 中具有“打开”图像PictureBox,单击它不会更改图像,它仍然是“打开”图像。我尝试了这段代码,但它对我不起作用:

 private void Form1_Load(object sender, EventArgs e)
        {          
    if (pictureBox1.Image == Properties.Resources.On)
                    {                        
                        checkBox1.Checked = true;
                    }
                    else
                    {                            
                        checkBox1.Checked = false;
                    }
}

我需要图像打开 = 复选框选中图像关闭 = 复选框未选中

4

1 回答 1

2

当你这样做时,pictureBox1.Image == Properties.Resources.On你正在检查它们是否等于相同的参考。答案是它们不是,因此即使图像相同,实际参考也不是。相反,您可以使用 PictureBox 的Tag属性来存储当前图像数据。例如

 if (checkBox1.Checked == false)
 {
     pictureBox1.Image = Properties.Resources.On;
     pictureBox1.Tag = "ON";
     checkBox1.Checked = true;            
 }
 else
 {
     pictureBox1.Image = Properties.Resources.Off;
     pictureBox1.Tag = "OFF";
     checkBox1.Checked = false;
 }

然后,当您想查看它有什么图像时,您可以阅读该标签

if (pictureBox1.Tag.ToString() == "ON")
    checkBox1.Checked = true;
else                            
    checkBox1.Checked = false;

附带说明一下,该Tag属性包含object类型,因此您不必存储和比较字符串,例如,您可以添加枚举。(尽管在这种情况下一个字符串就足够了)。

于 2013-07-04T01:43:56.400 回答