Jump to content
elrey

Botão com 2 icons

Recommended Posts

elrey

Boas.

Tenho um botão que tem um icon, e quando eu clico nele ele muda o icon. Até aqui tudo bem.

Mas eu queria quando eu clicasse outra vez no botão, voltasse ao icon inicial, mas não faz isso.

Até agora está assim:

Private Sub Button1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseClick
        Button1.Image = My.Resources._1111
End Sub

Ele começa com o icon "_111" e passa para o" _1111" mas não volta ao "_111".

Já tentei de outras formas mas não consegui.

Alguém me pode dar uma ajuda ?

Share this post


Link to post
Share on other sites
thoga31

Quando clicas no botão, a única acção que faz é mudar a imagem para a imagem _1111, independentemente de já ser a _1111 ou não. Tens de analisar qual a imagem, e depois mudá-la. O código será este, em princípio (não o testei), mas servirá de teoria mesmo que esteja qualquer coisa mal:

If Button1.Image = My.Resources._111 Then
     Button1.Image = My.Resources._1111
Else
     Button1.Image = My.Resources._111
End If

Cumpz ;)


Knowledge is free!

Share this post


Link to post
Share on other sites
elrey

Boas.

Obrigado pela a resposta.

Eu já tinha tentado como tu disseste mas na primeira linha, Neste Caso.

If Button1.Image = My.Resources._111 Then

Diz que o Operador '=' não está definido para tipos 'System.Drawing.Image' e 'System.Drawing.Bitmap'.

Mas o resto já não diz a mesma coisa e está bem.

Só mesmo aí é que diz isso.

Cumprimentos.

Share this post


Link to post
Share on other sites
thoga31

Descobri ;)

O IntelliSense deu-me a resposta. Aconselho-te a depositar alguma "esperança" no IntelliSense também. :)

Só espero que funcione mesmo desta vez.

Button1.Image.Equals(My.Resources._111)

Cumpz.


Knowledge is free!

Share this post


Link to post
Share on other sites
elrey

Ahahah, pois secalhar tenho mesmo. ;)

Mas continua a não dar, ele não dá qualquer erro.

Voltou a como estava no inicio, clica-se, muda o icon, quando se clica again, não muda.

Está assim o code.

If Button1.Image.Equals(My.Resources._1111) Then
        Button1.Image = My.Resources._111
Else
        Button1.Image = My.Resources._1111
End If

Share this post


Link to post
Share on other sites
SLIFE

Experimenta colocar o codigo, em vez de ser no evento Button1_MouseClick

Colocar no evento Button1_Click

Cpts

SJC


Sandro Coelho

Share this post


Link to post
Share on other sites
elrey

Boas.

O código já está no evento Button1_click, o evento Button1_MouseClick já não existe.

Continua a não dar.

Cumprimentos.

Share this post


Link to post
Share on other sites
cmd

Vou-te dar um código rápido e de cabeça, sem testar.

dim imagem as integer = 0

'dentro do sub no click do botão
if imagem = 0 then
     Button1.Image = My.Resources._111
     imagem = 1
elseif imagem = 1
     Button1.Image = My.Resources._1111
     imagem = 0
end if

Penso que assim dá ;)


Cumps.cmd

Share this post


Link to post
Share on other sites
elrey

Boas.

Obrigado pela a tentativa, mas não funcionou.

Icon Inicial = _111

Icon Muda com 1 Click = _1111

Icon Muda com 2 Click = _111

Assim consecutivamente.

Cumprimentos.

Share this post


Link to post
Share on other sites
bioshock

O código do @cmd têm de funcionar. Tens é de declarar:

Dim imagem as integer = 0

Por baixo do Public Class, todo o resto do código deves colocar no button, que foi o que ele te disse.

Share this post


Link to post
Share on other sites
Caça

Não é preciso isso, basta isto

If Button1.Image = My.Resources._111 Then
     Button1.Image = My.Resources._1111
Else
     Button1.Image = My.Resources._111
End If


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
bioshock

Isso, obviamente, devolve um erro acerca do operador '=' em comparações entre imagens.

@Elrey, se também não conseguires com o código do @cmd (que funciona), utilizas a propriedade tag ;)

Share this post


Link to post
Share on other sites
Caça

😳

Pois, são imagens... Não estava atento ao tópico. Sorry


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
elrey

Boas.

Agora já está a trabalhar, Obrigado a todos pela a ajuda.

Ficou a funcionar com o código do @cmd.

@Bioshock Eu tinha metido

Dim imagem as integer = 0

no sitio certo mas devido a alguma coisa, não ficou.

Retirei e meti outra vez e ficou a funcionar.

Cumprimentos.

Share this post


Link to post
Share on other sites
ribeiro55

Mesmo com imagens, se a imagem usada fosse sempre a dos recursos, poderiam efectuar o teste com "IS" ao invés de "="

If Button1.Image Is My.Resources._1111 Then
        Button1.Image = My.Resources._111
Else
        Button1.Image = My.Resources._1111
End If

Se há a possibilidade dos objectos serem de tipos diferentes (que pode ser o caso: Image é diferente de Bitmap), o teste dará falso pelo que o controlo da imagem com a propriedade Tag do botão (como alguém sugeriu) é a melhor opção, caso não o uses para outra coisa qualquer. (para não teres de arrastar a variável de controlo)


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.