2016-04-02 16 views
0

私のリソースに2画像あります(cat.pngdog.png)。 2つの画像の間でボタンの背景画像を変更するには、どうすればいいですか?ここに例があります:1つのボタンで右クリックして2つの画像を切り替える

私がボタンを右クリックすると、ボタンの画像は猫であり、もう一度右クリックすると犬に変わります。ここ

は動作しません私のコードです:

Private Sub btn1_MouseDown(sender As Object, e As MouseEventArgs) Handles btn1.MouseDown 
    If (e.Button = Windows.Forms.MouseButtons.Right) Then 
     btn1.BackgroundImage = My.Resources.cat 
     btn1.BackgroundImageLayout = ImageLayout.Stretch 
    End If 
    If ((e.Button = Windows.Forms.MouseButtons.Right) And (Not btn1.BackgroundImage Is Nothing)) Then 
     btn1.BackgroundImage = My.Resources.dog 
     btn1.BackgroundImageLayout = ImageLayout.Stretch 
    End If 
End Sub 

猫が表示されているが、私は再び右クリックしていたときに何も起こりません。

(私の悪い英語を教えてください:P) ありがとう!

+1

フォームレベルのブール変数( 'CatShowing'?)が必要です。最初のブロックが実行されると、CatShowingがtrueであるかどうかをテストします。その場合は、dogを表示し、CatShowingをfalseに設定します。次回は、CatShowingがfalseであるため、Catを表示してCatShowingをtrueに設定します。 –

答えて

0

論理を明確に書く方法を知っている必要があります。ここでは、if文を書く必要はありません。

したがって、以下のチェックは、猫が次に犬を表示するかどうかを判断するのに十分です。

If (e.Button = Windows.Forms.MouseButtons.Right) Then 
     If((btn1.BackgroundImage = My.Resources.cat) Or (btn1.BackgroundImage IsNot Nothing)) Then 'check for cat or no image 
     btn1.BackgroundImage = My.Resources.dog  ' set dog 
     Else 
     btn1.BackgroundImage = My.Resources.cat  'set cat 
     End If 
     btn1.BackgroundImageLayout = ImageLayout.Stretch  'in any case only stretch once 
End If 

また、私は以下のようではない何もチェックを変更するには言う:

btn1.BackgroundImage IsNot Nothing 

はこの作品を願っています。

+0

ご協力ありがとうございます。<_cat_/nothing>でエラーを検出しています。 – Biller

+0

@Biller実際の構文を記述する必要があります。<>に擬似コードを記述しました。 –

+0

ああありがとう:) – Biller

関連する問題