2012-03-02 19 views
0

私には画像cbの画像があります。ボタンの画像をクリックしてから変更してください。

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

この画像をクリックすると、画像をcg.pngに変更して何らかの操作を行いたいと思います。私はCBで画像をクリックすると、同じことを行う、その後

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は黒丸のボタン画像、cgは緑色の画像です。

どうすればいいですか?

+0

をクリックあなたは代わりの制御の 'Tag'プロパティを使用することができますイメージをToStringすると、おそらくあなたが望むものが返されません。 – Jason

+0

しかし、Tagプロパティを使ってこの情報を取得する方法は?これはうまくいかなかった:MessageBox.Show(PBr1_1.Image.Tag.ToString());これも MessageBox.Show(Convert.ToString(PBr1_1.Image.Tag)); – Elfoc

+2

'Tag'プロパティを任意に設定することができます。そして、あなたはあなたが 'Tag'を設定するものを得ることができます。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag.aspxを読んだことがありますか? – Jason

答えて

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

+0

次に、イメージパスを文字列変数に保存し、そのようなイメージを作成します:string myImg = "PATH_TO_IMAGE" System。 Drawing.Image foo = System.Drawing.Image.FromFile(myImg); – seveves

関連する問題