C# 使用图像更改选中状态

C# 使用图像更改选中状态,c#,winforms,C#,Winforms,我使用绑定到PictureBox的单击事件的此代码,在单击PictureBox时更改图像 private void pictureBox1_Click(object sender, EventArgs e) //domanda else if { if (checkBox1.Checked == false) { pictureBox1.Image = Properties.Resources.On;

我使用绑定到
PictureBox
单击事件的此代码,在单击
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;
            }
        }
它可以工作,但是如果我在
图片框中有“on”图像,单击它不会更改图像,它仍然是“on”图像。
我尝试了此代码,但不适用于我:

 private void Form1_Load(object sender, EventArgs e)
        {          
    if (pictureBox1.Image == Properties.Resources.On)
                    {                        
                        checkBox1.Checked = true;
                    }
                    else
                    {                            
                        checkBox1.Checked = false;
                    }
}
我需要图像打开=选中复选框选中
image off=checkedbox在执行
pictureBox1.image==Properties.Resources时未选中

。在
上检查它们是否等于相同的引用。答案是它们不是,所以即使图像是相同的,实际的参考也不是。相反,您可以使用PictureBox的属性来存储当前图像数据。比如说

 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;

作为旁注,
标记
属性包含
对象
类型,因此您不必存储和比较字符串,例如,您可以添加枚举。(虽然在这种情况下,字符串就足够了)。

“但不适合我”没有帮助。请解释一下,没什么。。picturebox状态未更改,代码无错误第一个代码应该可以工作,我无法理解您的这些单词
它可以工作,但是如果我在picturebox中有“on”图像,单击它不会更改图像,它仍然是“on”图像
?还有什么需要澄清的吗?