使用图像更改选中状态

本文关键字:状态 图像 | 更新日期: 2023-09-27 18:21:08

当单击PictureBox时,我使用绑定到PictureBoxClick事件的此代码来更改图像。

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;
                    }
}

我需要上的图像=已选中复选框image off=checkedbox not Checked

使用图像更改选中状态

执行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类型,因此不必存储和比较字符串,例如可以添加枚举。(尽管在这种情况下,字符串应该足够了)。