Jump to content
BigMachine3

Mudar imagem da picturebox ao clicar num botao

Recommended Posts

BigMachine3

Boas pessoal.

Tenho 5 botoes e 5 picturebox's. O que eu quero é que ao clicar num botao apareça uma imagem na seguinte picturebox se a anterior estiver ocupada.

Por exemplo, a primeira picturebox esta ocupada e eu clico no botao 4 e a imagem aparece na segunda picturebox.

Eu fiz um esquema:

if (pictureBox1.Image==" ")
{
    pictureBox1.Image=="imagem1";
}
else if (pictureBox1.Image=="imagem2" || pictureBox1.Image=="imagem3" || pictureBox1.Image=="imagem4" || pictureBox1.Image=="imagem5")
{
    pictureBox2.Image=="imagem1";
}

else if (pictureBox2.Image=="imagem2" || pictureBox2.Image=="imagem3" || pictureBox2.Image=="imagem4" || pictureBox2.Image=="imagem5")
{
    pictureBox3.Image=="imagem1";
}
else if (pictureBox3.Image=="imagem2" || pictureBox3.Image=="imagem3" || pictureBox3.Image=="imagem4" || pictureBox3.Image=="imagem5")
{
    pictureBox4.Image=="imagem1";
}
else if (pictureBox4.Image=="imagem2" || pictureBox4.Image=="imagem3" || pictureBox4.Image=="imagem4" || pictureBox4.Image=="imagem5")
{
    pictureBox5.Image=="imagem1";
}

 

Ou seja, se clicar num botao independentemente qual for, a picturebox1 tiver livre aparece a imagem la mas se estiver ocupada com outra imagem sem ser a 1 a imagem passa para a picturebox seguinte.

Se não deu para entender perguntem.

Share this post


Link to post
Share on other sites
Gnrtuga

Boas, acho que percebi mais ou menos...

Antes uma sugestão, se estás a escrever muitas vezes a mesma coisa é porque deve haver outra maneira de a fazer :) (imagina que tinhas 1300 picturebox's)

Por exemplo se repetes o mesmo código dentro dos eventos de vários botões, é mais fácil criares um evento à parte onde usas esse código e chamar esse evento de dentro do evento do botão. Escreves menos e é mais fácil corrigir o código num só sitio do que em vários.

Agora a minha sugestão (nota não experimentei, mas deve andar aqui perto)

foreach(var pictureBox in Controls.OfType<PictureBox>())
{
    if (pictureBox.Tag == null) 

       pictureBox.Image = "caminho da imagem";
}

Boa sorte

Edited by Gnrtuga

Férias! Estou por aqui: http://maps.google.p...001549&t=h&z=20 (a bulir claro está!)

Nunca mais é verão outra vez.. :)

Share this post


Link to post
Share on other sites
BigMachine3
Em 03/11/2017 às 17:30, Gnrtuga disse:

Boas, acho que percebi mais ou menos...

Antes uma sugestão, se estás a escrever muitas vezes a mesma coisa é porque deve haver outra maneira de a fazer :) (imagina que tinhas 1300 picturebox's)

Por exemplo se repetes o mesmo código dentro dos eventos de vários botões, é mais fácil criares um evento à parte onde usas esse código e chamar esse evento de dentro do evento do botão. Escreves menos e é mais fácil corrigir o código num só sitio do que em vários.

Agora a minha sugestão (nota não experimentei, mas deve andar aqui perto)


foreach(var pictureBox in Controls.OfType<PictureBox>())
{
    if (pictureBox.Tag == null) 

       pictureBox.Image = "caminho da imagem";
}

Boa sorte

vou tentar obrigado

Share this post


Link to post
Share on other sites
BigMachine3
Em 03/11/2017 às 17:30, Gnrtuga disse:

Boas, acho que percebi mais ou menos...

Antes uma sugestão, se estás a escrever muitas vezes a mesma coisa é porque deve haver outra maneira de a fazer :) (imagina que tinhas 1300 picturebox's)

Por exemplo se repetes o mesmo código dentro dos eventos de vários botões, é mais fácil criares um evento à parte onde usas esse código e chamar esse evento de dentro do evento do botão. Escreves menos e é mais fácil corrigir o código num só sitio do que em vários.

Agora a minha sugestão (nota não experimentei, mas deve andar aqui perto)


foreach(var pictureBox in Controls.OfType<PictureBox>())
{
    if (pictureBox.Tag == null) 

       pictureBox.Image = "caminho da imagem";
}

Boa sorte

as imagens estao na pasta Images que se encontra na pasta Imagens (pasta predefinida pelo windows).

eu pus o seguinte: 

foreach (var pictureBox in Controls.OfType<PictureBox>())
            {
                if (pictureBox.Tag == null)

                    pictureBox.Image = Image.FromFile(@"Imagens\Images\1523427.png");
            }

 

Dá-me erro na 4º linha

será que o path da imagem esta errado?

Share this post


Link to post
Share on other sites
BigMachine3
Em 03/11/2017 às 17:30, Gnrtuga disse:

Boas, acho que percebi mais ou menos...

Antes uma sugestão, se estás a escrever muitas vezes a mesma coisa é porque deve haver outra maneira de a fazer :) (imagina que tinhas 1300 picturebox's)

Por exemplo se repetes o mesmo código dentro dos eventos de vários botões, é mais fácil criares um evento à parte onde usas esse código e chamar esse evento de dentro do evento do botão. Escreves menos e é mais fácil corrigir o código num só sitio do que em vários.

Agora a minha sugestão (nota não experimentei, mas deve andar aqui perto)


foreach(var pictureBox in Controls.OfType<PictureBox>())
{
    if (pictureBox.Tag == null) 

       pictureBox.Image = "caminho da imagem";
}

Boa sorte

Tem de se fazer uma alterçao.

Onde está if (pictureBox.Tag==null) tem se que trocar o tag por image e assim passa a funcionar.

obrigado

Edited by BigMachine3

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.