none
Fazer comparação com if e atribui a imagem no picturebox c# RRS feed

  • Pergunta

  • Boa tarde,

    Sou iniciante em C#, preciso fazer uma trabalho de faculdade que é desenvolver uma urna eletrônica. Preciso que quando clicar em dois botoes tipo button1 e  button2 apareça uma imagem no picturebox do candidato. Então eu coloquei esse comando do if:

    if (label1.Text=="1" && label2.Text=="2") //verificar se os numeros que estão dentro dos dois label foi o 1 e o 2 e apresentar imagem
                {
                    pictureBox1.ImageLocation = @"C:\Users\FlavioTI\Documents\Visual Studio 2010\Projects\Urna\Urna\bolsonaro.jpg";

                }

    Só que ele não funciona quando colocado dentro do form, agora se colocar ele dentro do botão confirma aparece a foto, só que a foto precisa aparecer antes da pessoa confirmar, pois se ela pode corrigir o voto. Se alguém puder me ajudar, com esse comando ou sugerir outro, agradeço.

    quinta-feira, 7 de abril de 2016 18:50

Respostas

  • Andressa,

    Entendi,

    Você pode criar este método na sua aplicação.

    private void Verificar()
    {
        if (label1.Text == "1" && label2.Text == "2")
            pictureBox1.ImageLocation = @"C:\Users\FlavioTI\Documents\Visual Studio 2010\Projects\Urna\Urna\bolsonaro.jpg";

        pictureBox1.Visible = true;
    }

    No "onclick" de cada botão (1,2,3,4, etc) você chama essa função. Ou seja se o usuário clicar no 1 você vai atribuir o 1 no label1 e chamar o metodo (ainda não mostra a imagem), agora o usuario clicou no 2 e vc adicionou o 2 no label e chamou o método (vai mostrar). 

    Fiz um exemplo aqui e deu certo, assim que aparece os numero na tela (1 e 2) aparece tambem a imagem.

    Att, 

    • Sugerido como Resposta Silvaney sexta-feira, 8 de abril de 2016 00:02
    • Marcado como Resposta Marcos SJ sexta-feira, 8 de abril de 2016 13:08
    quinta-feira, 7 de abril de 2016 23:15

Todas as Respostas

  • Boa Tarde,

    Não entendi direito sua dúvida. Mas em fim...

    Para mostrar a imagem após confirmar você pode:
    Definir inicialmente o componente pictureBox1 para (Visible = false) após a pessoa votar (digitar o numero do candidato)
    você mostra o pictureBox1 (Visible = true) e finalmente após confirmar você volta para false.

    pictureBox1.Visible = true;

    Se precisar de ajuda na implementação, pode postar....

    Att, 

    • Sugerido como Resposta Silvaney quinta-feira, 7 de abril de 2016 20:16
    • Não Sugerido como Resposta Silvaney quinta-feira, 7 de abril de 2016 20:16
    • Sugerido como Resposta Silvaney quinta-feira, 7 de abril de 2016 20:17
    quinta-feira, 7 de abril de 2016 19:26
  • Quando aparecer esses dois números deveria aparecer a foto do meu candidato. E eu usei esse comando aqui:

     if (label1.Text == "1" && label2.Text == "2")
                {
                    pictureBox1.ImageLocation = @"C:\Users\FlavioTI\Documents\Visual Studio 2010\Projects\Urna\Urna\bolsonaro.jpg";

                }

    Só que ele só funciona quando eu insiro ele dentro do botão Confirmar.

    Eu queria fazer ele funcionar fora de qualquer botão...apenas quando clicar nesses dois números apareça a foto.

    quinta-feira, 7 de abril de 2016 20:50
  • Eu ja tentei colocar o if no label também só que não deu certo.

    O problema é que a foto tem que aparecer automaticamente ao aparecer esses dois numeros no label 1 e label 2, sem ter que clicar em nenhum botão. preciso de um código pra fazer aparecer a imagem quando o numero 1 foi inserido no label1 e o numero 2 for inserido no label 2. 

    Mas mesmo assim agradeço o esforço,

    Muito obrigado.

    quinta-feira, 7 de abril de 2016 22:50
  • Andressa,

    Entendi,

    Você pode criar este método na sua aplicação.

    private void Verificar()
    {
        if (label1.Text == "1" && label2.Text == "2")
            pictureBox1.ImageLocation = @"C:\Users\FlavioTI\Documents\Visual Studio 2010\Projects\Urna\Urna\bolsonaro.jpg";

        pictureBox1.Visible = true;
    }

    No "onclick" de cada botão (1,2,3,4, etc) você chama essa função. Ou seja se o usuário clicar no 1 você vai atribuir o 1 no label1 e chamar o metodo (ainda não mostra a imagem), agora o usuario clicou no 2 e vc adicionou o 2 no label e chamou o método (vai mostrar). 

    Fiz um exemplo aqui e deu certo, assim que aparece os numero na tela (1 e 2) aparece tambem a imagem.

    Att, 

    • Sugerido como Resposta Silvaney sexta-feira, 8 de abril de 2016 00:02
    • Marcado como Resposta Marcos SJ sexta-feira, 8 de abril de 2016 13:08
    quinta-feira, 7 de abril de 2016 23:15
  • Nossssaaaa funcionooouuuuu.....mds muito obrigadooooo...você salvou minha vidaaa...hehehehe

    Obrigado mesmo.

    sexta-feira, 8 de abril de 2016 00:01
  • Boa noite,

    Silvaney eu vou responder  aqui, porque por algum motivo o outro fórum foi bloqueado, mas enfim seu código ficou perfeito...eu só tive que mudar a questão do botão em branco que ele deu um erro, mas já resolvi...eu utilizei aquele outro Código de baixo que ficou mais simplificado e tals, é excelente nossa, mas vou usar o primeiro que fica mais como iniciante que sou mesmo...mas muito Obrigado, desde já agradeço demais.

    Já no caso de empate eu percebi isso, no caso de dois candidatos tiver um empate ele continua a rodar e tals...Eu vou tentar resolver aqui, Eu to tentando mudar na ultima condição de contagem de votos...Vou postar o raciocinio aqui que eu to seguindo, no caso de empate.

                if (qtdeTotalVotos == 5)
                {
                    if (VotosCandidatos[0] > VotosCandidatos[1] && VotosCandidatos[0] > VotosCandidatos[2] && VotosCandidatos[0] > VotosCandidatos[3] && VotosCandidatos[0] > VotosCandidatos[4])
                        MessageBox.Show("Candidato " + candidatos[0] + " venceu a eleição");
                    else if (VotosCandidatos[1] > VotosCandidatos[0] && VotosCandidatos[1] > VotosCandidatos[2] && VotosCandidatos[1] > VotosCandidatos[3] && VotosCandidatos[1] > VotosCandidatos[4])
                        MessageBox.Show("Candidato " + candidatos[1] + " venceu a eleição");
                    else if (VotosCandidatos[2] > VotosCandidatos[0] && VotosCandidatos[2] > VotosCandidatos[1] && VotosCandidatos[2] > VotosCandidatos[3] && VotosCandidatos[2] > VotosCandidatos[4])
                        MessageBox.Show("Candidata " + candidatos[2] + " venceu a eleição");
                    else if (VotosCandidatos[3] > VotosCandidatos[0] && VotosCandidatos[3] > VotosCandidatos[1] && VotosCandidatos[3] > VotosCandidatos[2] && VotosCandidatos[3] > VotosCandidatos[4])
                        MessageBox.Show("Votos " + candidatos[3] + " venceu a eleição");
                    else if (VotosCandidatos[4] > VotosCandidatos[0] && VotosCandidatos[4] > VotosCandidatos[1] && VotosCandidatos[4] > VotosCandidatos[2] && VotosCandidatos[4] > VotosCandidatos[3])
                        MessageBox.Show("Votos em " + candidatos[4] + " venceu a eleição");
                    else if (VotosCandidatos[]== VotosCandidatos[] )//Eu tentei comparar a quantidade, mas ainda estou tentando mexer no código
                        MessageBox.Show("Os Candidatos" + candidatos[] + "e" + candidatos[] + "Empataram");
    
    
                    qtdeTotalVotos = 0; //terminou a votação zera a quantidade de votos
                    VotosCandidatos = new int[] { 0, 0, 0, 0, 0 };
                }


    Se você puder dar mas essa dica agradeço....


    Eu mudei essa ultima linha do codigo de Empate com o numero dos candidatos dentro ai funcionou, só que ter que fazer Candidato por Candidato muito Trabalho

    else if (VotosCandidatos[0]== VotosCandidatos[1])
                        MessageBox.Show("Os Candidatos " + candidatos[0] + " e " + candidatos[1] + " Empataram ");

    Eu quero  que ele acesse o Candidato que tiver a mesma quantidade de votos sem ter que colocar um por um...Tem como?!


         







    • Editado Andressa.s terça-feira, 26 de abril de 2016 16:49
    terça-feira, 26 de abril de 2016 02:24
  • Boa noite, 

    Que bom que deu certo Andressa.
    Qualquer dúvida em relação ao empate pode postar aqui. Não vou postar a solução porque percebi que você quer aprender de verdade e não pegar um trabalho "pronto". Parabéns, continue assim.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 26 de abril de 2016 02:37
  • Boa tarde,

    Consegui chegar nesse ponto na solução do empate só que preciso acessar o indice do vetor, só que sem ter que colocar codigo por codigo, se puder me ajudar agradeço;

    else if (VotosCandidatos[ ]== VotosCandidatos[ ])//dentro desses vetores queria que ele comparasse os candidatos que tiveram votos iguais e apresentasse a mensagem
                        MessageBox.Show("Os Candidatos " + candidatos[ ] + " e " + candidatos[ ] + " Empataram ");
    Tem como acessar o indice sem ter que colocar o numero??

    terça-feira, 26 de abril de 2016 17:15
  • Boa tarde,

    Andressa, existe inúmeras maneiras de fazer isso. Vou postar aqui três soluções e ambas atende sua necessidade, deixando a usabilidade a seu critério.

    Exemplo 1:

    if (qtdeTotalVotos == 5)
    {
        if (VotosCandidatos[0] > VotosCandidatos[1] && VotosCandidatos[0] > VotosCandidatos[2] && VotosCandidatos[0] > VotosCandidatos[3] && VotosCandidatos[0] > VotosCandidatos[4])
            MessageBox.Show("Candidato " + candidatos[0] + " venceu a eleição");
        else if (VotosCandidatos[1] > VotosCandidatos[0] && VotosCandidatos[1] > VotosCandidatos[2] && VotosCandidatos[1] > VotosCandidatos[3] && VotosCandidatos[1] > VotosCandidatos[4])
            MessageBox.Show("Candidato " + candidatos[1] + " venceu a eleição");
        else if (VotosCandidatos[2] > VotosCandidatos[0] && VotosCandidatos[2] > VotosCandidatos[1] && VotosCandidatos[2] > VotosCandidatos[3] && VotosCandidatos[2] > VotosCandidatos[4])
            MessageBox.Show("Candidata " + candidatos[2] + " venceu a eleição");
        else if (VotosCandidatos[3] > VotosCandidatos[0] && VotosCandidatos[3] > VotosCandidatos[1] && VotosCandidatos[3] > VotosCandidatos[2] && VotosCandidatos[3] > VotosCandidatos[4])
            MessageBox.Show("Votos " + candidatos[3] + " venceu a eleição");
        else if (VotosCandidatos[4] > VotosCandidatos[0] && VotosCandidatos[4] > VotosCandidatos[1] && VotosCandidatos[4] > VotosCandidatos[2] && VotosCandidatos[4] > VotosCandidatos[3])
            MessageBox.Show("Votos em " + candidatos[4] + " venceu a eleição");
        else //Eu tentei comparar a quantidade, mas ainda estou tentando mexer no código
        {
            int maiorVoto = VotosCandidatos.Max(); //Obtem o maior voto 
            string candidatosEmpatados = ""; //String para guardar o nome dos candidatos
            for (int i = 0; i < VotosCandidatos.Length; i++) // Percorre a lista dos votos
            {
                if (VotosCandidatos[i] == maiorVoto) // Verifica se é igual ao maior voto
                    candidatosEmpatados += candidatos[i] + ",";
            }
    
            candidatosEmpatados = candidatosEmpatados.Remove(candidatosEmpatados.Length - 1);// Remove a virgula do ultimo candidato
            MessageBox.Show("Os Candidatos (" + candidatosEmpatados + ") Empataram");
        }
        qtdeTotalVotos = 0; //terminou a votação zera a quantidade de votos
        VotosCandidatos = new int[] { 0, 0, 0, 0, 0 };
    }

    Exemplo 2:

    if (qtdeTotalVotos == 5)
    {
    
    	if (VotosCandidatos[0] > VotosCandidatos[1] && VotosCandidatos[0] > VotosCandidatos[2] && VotosCandidatos[0] > VotosCandidatos[3] && VotosCandidatos[0] > VotosCandidatos[4])
    		MessageBox.Show("Candidato " + candidatos[0] + " venceu a eleição");
    	else if (VotosCandidatos[1] > VotosCandidatos[0] && VotosCandidatos[1] > VotosCandidatos[2] && VotosCandidatos[1] > VotosCandidatos[3] && VotosCandidatos[1] > VotosCandidatos[4])
    		MessageBox.Show("Candidato " + candidatos[1] + " venceu a eleição");
    	else if (VotosCandidatos[2] > VotosCandidatos[0] && VotosCandidatos[2] > VotosCandidatos[1] && VotosCandidatos[2] > VotosCandidatos[3] && VotosCandidatos[2] > VotosCandidatos[4])
    		MessageBox.Show("Candidata " + candidatos[2] + " venceu a eleição");
    	else if (VotosCandidatos[3] > VotosCandidatos[0] && VotosCandidatos[3] > VotosCandidatos[1] && VotosCandidatos[3] > VotosCandidatos[2] && VotosCandidatos[3] > VotosCandidatos[4])
    		MessageBox.Show("Votos " + candidatos[3] + " venceu a eleição");
    	else if (VotosCandidatos[4] > VotosCandidatos[0] && VotosCandidatos[4] > VotosCandidatos[1] && VotosCandidatos[4] > VotosCandidatos[2] && VotosCandidatos[4] > VotosCandidatos[3])
    		MessageBox.Show("Votos em " + candidatos[4] + " venceu a eleição");
    	else //Eu tentei comparar a quantidade, mas ainda estou tentando mexer no código
    	{
    		int maiorVoto = VotosCandidatos.Max(); //Obtem o maior voto                    
    		//Obtem o indice do vetor com candidatos empatados
    		int[] indiceEmpates = VotosCandidatos.Select((b, i) => b == maiorVoto ? i : -1).Where(i => i != -1).ToArray();
    		string candidatosEmpates = "";
    		for (int i = 0; i < indiceEmpates.Length; i++)
    		{
    			candidatosEmpates += candidatos[indiceEmpates[i]] + ",";
    		}
    		candidatosEmpates = candidatosEmpates.Substring(0, candidatosEmpates.Length - 1);
    
    		MessageBox.Show("Os Candidatos (" + candidatosEmpates + ") Empataram");
    	}
    	qtdeTotalVotos = 0; //terminou a votação zera a quantidade de votos
    	VotosCandidatos = new int[] { 0, 0, 0, 0, 0 };
    }

    Exemplo 3:

    if (qtdeTotalVotos == 5)
    {
        int maiorVoto = VotosCandidatos.Max(); //Obtem o maior voto  
        //Obtem o indice do vetor com candidatos empatados
        int[] indiceEmpates = VotosCandidatos.Select((b, i) => b == maiorVoto ? i : -1).Where(i => i != -1).ToArray();
    
        if (indiceEmpates.Length > 1)
        {
            string candidatosEmpates = "";
            for (int i = 0; i < indiceEmpates.Length; i++)
            {
                candidatosEmpates += candidatos[indiceEmpates[i]] + ",";
            }
            candidatosEmpates = candidatosEmpates.Substring(0, candidatosEmpates.Length - 1);
    
            MessageBox.Show("Os Candidatos (" + candidatosEmpates + ") Empataram");
        }
        else
        {
            MessageBox.Show("Candidato " + candidatos[indiceEmpates[0]] + " venceu a eleição");
        }
        qtdeTotalVotos = 0; //terminou a votação zera a quantidade de votos
        VotosCandidatos = new int[] { 0, 0, 0, 0, 0 };
    }
     

    É importante ressaltar que existe outras maneiras de fazer isso, mas acredito ser mais complexa para o momento.
    Qualquer dúvida, estou a disposição.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney terça-feira, 26 de abril de 2016 20:08
    terça-feira, 26 de abril de 2016 20:06
  • Boa tarde,

    Silvaney, voltei pra agradecer, testei as três formas e deu super certo, fiz uma pequena adaptação e consegui finalizar o projeto.

    Muito Obrigado, você ajudou demais.

    sexta-feira, 6 de maio de 2016 18:54
  • Boa noite,

    Por nada, fico feliz por saber que ajudei você.
    Qualquer dúvida pode postar...

    Sucessos pra você!

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 6 de maio de 2016 23:35
  • Bom Dia, Poderia dar mais detalhes desse projeto? estou com dificuldades em realizar meu trabalho que envolve uma urna também.

    Desde já agradeço!

    Caio Lins

    sexta-feira, 23 de novembro de 2018 10:30