2012-03-02 216 views
0

我有图片cb的图片框。点击后更改按钮图像

PBr1_1.Image = new Bitmap(@"Logos\\Images\\cb.png"); 

我想将图片更改为cg.png,并点击此图片时执行一些操作。我正在尝试类似的,但没有成功:

private void PBr1_1_Click(object sender, EventArgs e) 
{  
    if (PBr1_1.Image.ToString() == "cb.png") 
      { 
      PBr1_1.Image = new Bitmap(@"Logos\\Images\\cg.png"); 
      // Do some stuff. 
      } 
} 

然后做同样的事情,当我点击图像与cb。想象这个cb是黑色的圆形按钮图像,cg是绿色的。

我该怎么做?

+0

你可以使用该控件的'Tag'属性,而不是处理图像,这可能不会返回你想要的。 – Jason 2012-03-02 10:04:56

+0

但是如何使用Tag属性获取这些信息?这不起作用:MessageBox.Show(PBr1_1.Image.Tag.ToString());这也是 MessageBox.Show(Convert.ToString(PBr1_1.Image.Tag)); – Elfoc 2012-03-02 10:17:45

+2

您可以将“标签”属性设置为任何你想要的。所以你可以得到你设置的任何标签。你读过http://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag.aspx吗? – Jason 2012-03-02 10:18:44

回答

2

Jason是正确的,你应该使用某种临时存储来保存你当前的位图。
Tag属性在这种情况下很有用。下面示例代码:(没有错误处理)

在某处你的负载情况下

PBr1.Tag = "cb.png";` 
PBr1_1.Image = new Bitmap(Path.Combine("Logos\\Images", PBr1.Tag.ToString()); 

,然后点击链接

private void PBr1_1_Click(object sender, EventArgs e) 
{  
    string imgPath = "Logos\\Images"; 
    PBr1_1.Image.Dispose(); 
    PBr1_1.Tag = (PBr1_1.Tag == "cb.png" ? "cg.png") : "cb.png") ; 
    Bitmap bm = new Bitmap(Path.Combine(imgPath, PBr1.Tag.ToString()); 
    PBr1_1.Image = bm; 
} 
0

您确定“PBr1_1.Image.ToString()”确实只返回图像名称吗? 也许你应该通过写入PBr1_1.Image.ToString()来检查这个控制台或类似的东西

+0

不,它不是 - 它返回System.Drawing.Bitmap,但这是我的一个尝试这样做:) – Elfoc 2012-03-02 10:13:24

+0

然后保存图像路径为字符串变量并创建像这样的图像:string myImg =“PATH_TO_IMAGE” 系统。 Drawing.Image foo = System.Drawing.Image.FromFile(myImg); – seveves 2012-03-02 10:19:09