1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda Windows Forms C#

Discussão em 'Programação' iniciada por Ragazzo04, 11 de Outubro de 2012. (Respostas: 4; Visualizações: 1001)

  1. Ragazzo04

    Ragazzo04 Power Member

    Boas pessoal

    Precisava de uma ajudinha em C# que estou um pouco enferrujado.
    É uma coisa simples, eu tenho um butão que muda de imagem ao clicar certo até aqui tudo bem, e estou a usar este código:

    Código:
    private void pictureBox2_Click(object sender, EventArgs e)        
    {
         pictureBoxMaquina2.Image = Gabinete_Informatica.Properties.Resources.selectedpc;
    }
    
    Mas o que não estou a conseguir fazer é, ao voltar a clicar no botão ele voltar a imagem inicial.

    Agradeço desde já qualquer ajuda que me consigam dar...
     
  2. Tens várias maneiras de fazer isso.
    A mais simples que me ocorre é teres uma Flag que te indique o estado do botão.
    Código:
    private int buttonState = 0;
    private void pictureBox2_Click(object sender, EventArgs e)        
    {
    switch(buttonState){
    case 0: buttonState++;pictureBoxMaquina2.Image = Gabinete_Informatica.Properties.Resources.selectedpc; break;
    default: buttonState = 0;pictureBoxMaquina2.Image = Gabinete_Informatica.Properties.Resources.original;
    }
    }
    
     
  3. Ragazzo04

    Ragazzo04 Power Member

    Boa Noite

    Obrigado pela ajuda, testei e isso resolveu-me o problema que tinha mas agora que tive que fazer o mesmo para outros botões, o sistema de flags não funciona muito bem, porque teria que criar uma flag diferente para cada botão, o que em ultimo caso vai ter que ser =\
     
  4. Ok o sistema de flags.
    Sabes que precisas de uma flag para contabilizar o numero de clicks. Penso que não podes fugir a isso.
    pensei que um if(picture.Image == Properties.Resources.whatever) funciona-se. Mas não.

    Eis a minha solução.
    Cria uma nova class.
    Código:
    using System.Windows.Forms;
    
    
    class nButton:Button
    {
        public int flag = 0;
    }
    
    
    Compila o código, ou debug test. E na toolbox vai aparecer um novo elemento, chamado nButton.
    Arrasta para a janela e vais ver que é um botão aparentemente igual ao do windows form.
    Agora vamos novamente para o codigo.
    Evento de click no botão.
    Código:
    private void nButton1_Click(object sender, EventArgs e)
    {
    	nButton s = (nButton)sender;
    	if (s.flag == 0)
    	{
    		pictureBox1.Image = Properties.Resources.buia;
    		s.flag++;
    	}
    	else
    	{
    		s.flag = 0;
    		pictureBox1.Image = pictureBox1.InitialImage;
    	}
    }
    
    
    Conclusão, o sistema de flags continua implementado, a diferença é que cada botão tem a sua propria flag gerada.
    Espero ter ajudado de alguma forma.
    Já agora, eu coloquei a imagem inicial em Image e em InitialImage da Picturebox, só para me facilitar, não és obrigado a fazer o mesmo.
     
  5. Ragazzo04

    Ragazzo04 Power Member

    Boa noite, peço desculpa por nunca mais ter dito nada, mas infelizmente tive que manter este projeto em standby durante um tempo. Mas hoje tive tempo de testar a sua solução e funciona dentro do que eu desejava :D muito obrigado pela ajuda PrOOf.
     

Partilhar esta Página