使用Image更改已检查状态

时间:2013-07-04 01:04:40

标签: c# winforms

我使用此代码绑定到PictureBox的{​​{1}}事件,以便在点击Click时更改图片。

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”图像。 我试过这段代码,但它对我不起作用:

PictureBox

我需要图片= checkbox已检查 image off = checkedbox未选中

1 个答案:

答案 0 :(得分: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类型,因此您不必存储和比较字符串,例如,您可以添加枚举。 (虽然在这种情况下字符串就足够了)。