2012-01-19 1 views
0

一度クリックするとボタンのBackgroundImageを変更してから、もう一度クリックすると元に戻します(何度も何度もやり直します)。私のコードスニペットはこれです:button.BackgroundImage = <pngfile>何もしません

private void handButton_Click(object sender, EventArgs e) 
    { 
     if (handButton.BackgroundImage == WindowsFormsApplication1.Properties.Resources.Hands_Right) 
     { 
      handButton.BackgroundImage = WindowsFormsApplication1.Properties.Resources.Hands_Left; 
     } 
     else if (handButton.BackgroundImage == WindowsFormsApplication1.Properties.Resources.Hands_Left) 
     { 
      handButton.BackgroundImage = WindowsFormsApplication1.Properties.Resources.Hands_Right; 
     } 
    } 

私はプログラムを実行し、ボタンをクリックします。何も起こりません。画像は32×32で、元の画像をはっきりと見ることができます。クリックすると元の画像がそのまま残ります。このスニペットに影響を与える他の変数はありません(少なくとも、 "handButton"の検索はこのスニペットの結果のみを取得します)。

提案がありますか?私は間違いがないので、私はこれについて間違っていると思う。イメージを前後に変更するより良い方法はありますか?

+0

クリックするだけで確認できますか?コードをステップ実行するとどうなりますか?元画像は何ですか?それが左か右でないなら、それは決して決して決してありません。 – LarsTech

+0

申し訳ありませんが、私はあなたが何を意味するのか分かりません。コードが実行されることを示すウィンドウがありますか? – h3half

答えて

3

Properties.Resourcesクラスは、あなたの思うように動作しません。 Hands_Rightのようなプロパティは実際にはの新しいビットマップを返します。以前に返されたオブジェクトはありません。ビットマップを変更するとデザインからそのプロパティが変更されるため、これはうまくいきません。

したがって、if()文の式はtrueに評価されません。ボタンの状態を別々に追跡します。

+0

魅力のように別々に状態を追跡!ありがとう。 – h3half

関連する問題