2016-04-02 25 views
0

Kaynaklarımda 2 görüntü var (cat.png ve dog.png). Bir düğmenin arka plan resmini, sağ tıklandığında 2 görüntü arasında nasıl değiştirebilirim bilmek istiyorum. Örnek:1 görüntüyü sağdan tıklatarak 1 görüntüyü değiştirme

Düğmeye sağ tık olduğumda düğmenin resmi kedidir ve tekrar sağ tıkladığımda köpeğe dönüşür.

burada çalışmıyor benim kodudur: kedi gösteriyor

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 

ama tekrar sağ tıklayarak am zaman hiçbir şey olmuyor.

(Kötü ingilizce için üzgünüz: P) Teşekkürler!

+1

Form düzeyinde bir boole değişkeni ('CatShowing'?) Gerekir. İlk blok yürütüldüğünde, CatShowing'in doğru olup olmadığını test edin. Eğer öyleyse, köpeği gösterin ve CatShowing'i false olarak ayarlayın. Bir dahaki sefere, CatShowing yanlış olduğu için, kediyi gösterir ve CatShowing'i true olarak ayarlarsınız. –

cevap

0

Açıkça bir mantığın nasıl yazılacağını bilmelisiniz. Sanırım ikinci bir ifade yazmaya gerek yok.

Aşağıda, kedinin gösterilip gösterilmeyeceğini belirlemek için yeterlidir.

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 

Ayrıca aşağıda gibi değil hiçbir şey çeki değiştirmek söyleyebilirim:

btn1.BackgroundImage IsNot Nothing 

Umut bu çalışır.

+0

Yardımlarınız için teşekkür ederiz, ancak <_cat_/no> – Biller

+0

@Biller adresindeki bir hatayı algılamıyorsunuz. Orada gerçek sözdizimi yazmanız gerekiyor. <> Için sözde bir kod yazdım. –

+0

oh çok teşekkür ederim :) – Biller

İlgili konular