none
Manipulação Button RRS feed

  • Pergunta

  • Olá. eu estou aprendendo c#. me deparei com um problema  e não estou conseguindo resolver.

    eu tenho 3 botões - 1,2,3. eu quero criar um rotina que verifique se os botões foram clicados e quando os 3 botões forem clicados e desativados o sistema me emita uma mensagem de alerta. gostaria de receber uma alerta sempre que os 3 botões forem clicados independente da sequencia de cliques. exemplo: click button 2, 3,1 = "alerta" . click button 3,2,1 = " alerta" , click button 1,2,3 = "alerta" o que eu quero esclarecer é que eu preciso de um alerta quando os 3 botões forem clicados e desativados independentemente da sequencia de cliques. alguém por favor me ajude. isso é importante.

    sábado, 27 de janeiro de 2018 05:33

Respostas

  • Falha minha, altere 

    if (btn1 == true && btn2 == true && btn3 == false)

    para

    if (btn1 == true && btn2 == true && btn3 == true)
    
    // só para conhecimento, o código acima é o mesmo que
    // if (btn1 && btn2 && btn3)


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    segunda-feira, 29 de janeiro de 2018 23:22

Todas as Respostas

  • Crie uma variável boolean para cada botão, daí no evento click de cada botão você altera o valor da respectiva variável para true. Além disso, você verificar no click de cada botão se as três variáveis estão com valor igual (==) a true e caso esteja, utilize o método MessageBox.Show para exibir o alerta.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    domingo, 28 de janeiro de 2018 20:00
  • Olá Juliano. você poderia me fornecer o Código. eu não consegui resolver
    segunda-feira, 29 de janeiro de 2018 17:10
  • Coloque aqui o que você conseguiu fazer e qual erro está acontecendo.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    segunda-feira, 29 de janeiro de 2018 17:16
  • sei que está errado. eu preciso entender. se você puder por favor resolva para mim.

    o codigo: 

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                bool btn1  = true;
                bool btn2 = true;
                bool btn3  = true;

                if (btn1 == false) ; 
                if (btn2 == false) ;
                if (btn3 == false) ;

                MessageBox.Show("Ok. Os 3 botões foram clicados");

            }

            private void button3_Click(object sender, EventArgs e)
            {
                btn3.Enabled = false;
            }

            private void button2_Click(object sender, EventArgs e)
            {
                btn2.Enabled = false;
            }
        }
    }


    segunda-feira, 29 de janeiro de 2018 18:42
  • Coloque o código abaixo no nível da classe (após o public class ...):

    bool btn1  = false;
    bool btn2 = false;
    bool btn3  = false;
    Afinal você precisa que o valor seja mantido após cada evento.

    Daí no início de cada código do evento click você altera apenar a variável bool referente aquele botão (button1 altera btn1 para true, button2 altera btn2 para true e por aí vai) e logo em seguida verifica se todos estão como true:

    private void button1_Click(object sender, EventArgs e)
            {
                btn1 = true;
                Validar();            
    
            }
    
    private void Validar()
    {
    if (btn1 == true && btn2 == true && btn3 == false)
    {
    button1.Enabled = false;
    button2.Enabled = false;
    button3.Enabled = false;
                MessageBox.Show("Ok. Os 3 botões foram clicados");
    }
    }

    Agora é só replicar o código para os outros dois botões e testar. 


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    segunda-feira, 29 de janeiro de 2018 18:54
  • Olá juliano.  eu fiz. só que a mensagem está disparando no segundo clique. sendo em ordem. se eu clicar no botões 1,3,2 não disparar. mais basta clicar em ordem nos botões 1 e 2 que dispara antecipadamente. veja o código e me diga que está correto.

    using System;
    using System.Windows.Forms;

    namespace Novo_Projeto
    {
        public partial class Form1 : Form
         
        {
            bool btn1 = false;
            bool btn2 = false;
            bool btn3 = false;

            public Form1()
            {
                InitializeComponent();

            }    

            private void Form1_Load(object sender, EventArgs e)
            {
               
            }

            private void button1_Click(object sender, EventArgs e)
            {
                btn1 = true;
                Validar();        
            }

            private void button2_Click(object sender, EventArgs e)
            {
                btn2 = true;
                Validar();        
            }

            private void button3_Click(object sender, EventArgs e)
            {
                btn3 = true;
                Validar();        
            }

            private void Validar()
    {
    if (btn1 == true && btn2 == true && btn3 == false)
    {
    button1.Enabled = false;
    button2.Enabled = false;
    button3.Enabled = false;
                MessageBox.Show("Ok. Os 3 botões foram clicados");
    }
    }
            }
        }

    segunda-feira, 29 de janeiro de 2018 22:25
  • Falha minha, altere 

    if (btn1 == true && btn2 == true && btn3 == false)

    para

    if (btn1 == true && btn2 == true && btn3 == true)
    
    // só para conhecimento, o código acima é o mesmo que
    // if (btn1 && btn2 && btn3)


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    segunda-feira, 29 de janeiro de 2018 23:22
  • Olá Juliano. eu persegui com o projeto. eu tenho um pequeno problema.

    o algoritmo funciona porem depois que foi clicado nos 3 botões e tenho um problema.

    as informações ficam armazenadas nas variáveis e eu preciso limpar por que assim se eu acabou clicando novamente em um dos 3 botões o software acaba informando novamente a mensagem pois a informação ficou armazenada na variáveis. eu preciso limpar as variáveis tipo bool.


    • Editado Pablo Pila quinta-feira, 1 de fevereiro de 2018 19:23
    quinta-feira, 1 de fevereiro de 2018 19:23