2012-03-02 261 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