Ajuda Windows Forms C#

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...
 
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;
}
}
 
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;
}
}

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 =\
 
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.
 
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.

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.
 
Back
Topo