Atribuir valor em botões C#

9 respostas
R

Estou desenvolvendo uma simples calculadora em C#, a interface está igual a do Windows, porem não estou conseguindo com que ao clicar nos botões o numero apareção no TextBox o valor, atribui o valor dos botões através da tela de propriedades Tag.

Botão 1 -> 1
Botão 2 -> 2

e assim por diante.

Alguem poderia me ajudar a fazer a visualização dos numeros na tela e as operações ? Ou pelo menos informar algum material que irem encontrar isso ou algo parecido.

Valeu

9 Respostas

N

Opa, Rezende!

Você pode fazer um evento geral para todos os seus botões, onde você pega a propriedade Text do sender e usa ela para cálculo. Algo como:

Button buttonUm = new Button("1");
buttonUm.Click += new EventHandler(AcionarBotaoCalculadora);

Button buttonDois = new Button("2");
buttonDois.Click += new EventHandler(AcionarBotaoCalculadora);

//...


protected void AcionarBotaoCalculadora(object sender, EventArgs args)
{
    Button buttonAcionado = sender as Button;
    textboxExibir.Text = ButtonAcionado.Text;
}

Que tal?
Abraços, fique com Deus!

R

No Visual Studio, dê 2 cliques em cima do botão que assim se cria automaticamente o corpo do método.

R

Fala galera !

Obrigado pela força ! Vou tentar fazer os codigos aqui, vou usar este tópico caso eu tenha mais duvidas.

Valeu !

R

Fala galera !

Então tentei fazer isso porem me aparece varios erros o codigo esta assim
namespace calculadora
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btn0_Click(object sender, EventArgs e)
        {
            Button btn0 = new Button("0");
            btn0.Click += new EventHandler(AcionaBotaoCalc);
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            Button btn1 = new Button("1");
            btn1.Click += new EventHandler(AcionaBotaoCalc);
        }
        private void btn2_Click(object sender, EventArgs e)
        {
            Button btn2 = new Button("2");
            btn2.Click += new EventHandler(AcionaBotaoCalc);
        }
        private void btn3_Click(object sender, EventArgs e)
        {
            Button btn3 = new Button("3");
            btn3.Click += new EventHandler(AcionaBotaoCalc);
        }
        private void btn4_Click(object sender, EventArgs e)
        {
            Button btn4 = new Button("4");
            btn4.Click += new EventHandler(AcionaBotaoCalc);
        }
        private void btn5_Click(object sender, EventArgs e)
        {
            Button btn5 = new Button("5");
            btn5.Click += new EventHandler(AcionaBotaoCalc);
        }
        private void btn6_Click(object sender, EventArgs e)
        {
            Button btn6 = new Button("6");
            btn6.Click += new EventHandler(AcionaBotaoCalc);
        }
        private void btn7_Click(object sender, EventArgs e)
        {
            Button btn7 = new Button("7");
            btn7.Click += new EventHandler(AcionaBotaoCalc);
        }
        private void btn8_Click(object sender, EventArgs e)
        {
            Button btn8 = new Button("8");
            btn8.Click += new EventHandler(AcionaBotaoCalc);
        }
        private void btn9_Click(object sender, EventArgs e)
        {
            Button btn9 = new Button("9");
            btn9.Click += new EventHandler(AcionaBotaoCalc);
        }

        private void btnsoma_Click(object sender, EventArgs e)
        {
            Button btnsoma = new Button("+");
            btnsoma.Click += new EventHandler(AcionaBotaoCalc);
        }

        private void btnsub_Click(object sender, EventArgs e)
        {
            Button btnsoma = new Button("-");
            btnsub.Click += new EventHandler(AcionaBotaoCalc);
        }

        private void btnmult_Click(object sender, EventArgs e)
        {
            Button btnmult = new Button("*");
            btnmult.Click += new EventHandler(AcionaBotaoCalc);
        }

        private void btndiv_Click(object sender, EventArgs e)
        {
            Button btndiv = new Button("/");
            btndiv.Click += new EventHandler(AcionaBotaoCalc);
        }
        protected void AcionaBotaoCalc(object sender, EventArgs args)
        {
            Button buttonAcionado = sender as Button;
            MessageBox.Show = buttonAcionado.Text;
        }


    }
}

O erro é o seguinte

Erro 2 'System.Windows.Forms.Button' não contém um construtor que recebe 1 argumentos c:\users\user\documents\visual studio 2010\Projects\calculadora\calculadora\Form1.cs 21 27 calculadora

Isso em varias linhas, acho que se consertar isto fica tudo ok :D

J

Tente assim

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

        private void btn0_Click(object sender, EventArgs e)
        {
            Button btn0 = new Button();
            btn0.Text = "0";
            btn0.Click += new EventHandler(AcionaBotaoCalc);
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            Button btn1 = new Button("1");
			btn1.Text = "1";
            btn1.Click += new EventHandler(AcionaBotaoCalc);
        }
		
		// E assim por diante


    }
}
N

Opa, tá indo pelo caminho errado!! rs

O que eu quis representar aí é você indo nas propriedades do botão, Events, e, no evento "Click", atribuindo o método "AcionarBotaoCalculadora"! O certo, codificando à mão (que é o código no Designer do formulário) seria:
namespace calculadora
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            btn0.Click += new EventHandler(AcionarBotaoCalculadora);
            btn1.Click += new EventHandler(AcionarBotaoCalculadora);
            btn2.Click += new EventHandler(AcionarBotaoCalculadora);
            btn3.Click += new EventHandler(AcionarBotaoCalculadora);
            btn4.Click += new EventHandler(AcionarBotaoCalculadora);
            btn5.Click += new EventHandler(AcionarBotaoCalculadora);
            btn6.Click += new EventHandler(AcionarBotaoCalculadora);
            btn7.Click += new EventHandler(AcionarBotaoCalculadora);
            btn8.Click += new EventHandler(AcionarBotaoCalculadora);
            btn9.Click += new EventHandler(AcionarBotaoCalculadora);
        }

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

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

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

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

        protected void AcionaBotaoCalc(object sender, EventArgs args)
        {
            // Com isso, você adiciona um dígito à direita do número exibido.
            Button buttonAcionado = sender as Button;
            textboxExibeResultado.Text += sender.Text;
        }
    }
}

É isso que tem que estar no Designer do formulário. Para não ter que escrever no código os EventHandlers, você vai nas propriedades, como expliquei acima.
Agora, a lógica é contigo...

Grande abraço, fique com Deus!!

R

Valeu amigo.

Vou tentar aqui,

Agradeço muito tua ajuda, esta sendo muito útil para mim.

Nicolas, sim, porem tenho que atribuir valores para os botões. Vou fazer o que o Jhoony esta dizendo. OK ?

Obrigado

R

Caros, meu codigo ficou mais ou meno assim !

amespace Calculadora
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            BoxTela.Text = "";
        }

        private void button0_Click(object sender, EventArgs e)
        {
            Button button0 = new Button();
            button0.Text = "0";
            if (BoxTela.Text == "")
            {

            }
            else
                BoxTela.Text += "0";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Button button1 = new Button();
            button1.Text = "1";
            BoxTela.Text += "1";
            
        }

        // e assim por diante

Consegui visualizar o numero no TextBox da calculadora. Agora terei que pegar o valor e fazer os codigos. Qual quer duvida perguntarei por este tópico

Valeu

W

Pessoal, cade os conhecimentos de OOP ??? :slight_smile:

Para que repetir codigo??!?!?!? :slight_smile:

Nao seria mais facil por exemplo, criar um class BotaoCalculadora que herda Button class ??? E no construtor dessa classa adicionar um event handle para o evento click ??

public class BotaoCalculadora : Button
    {
        public BotaoCalculadora (String text)
        {
            Text = text;
            this.Click += new EventHandler(CalcButton_Click);
        }

        void CalcButton_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Clicou no botao: " + this.Text);
        }
    }

Ai a unica coisa que voce vai precisar fazer eh criar os botoes e adiciona-los no form.

BotaoCalculadora botao1 = new BotaoCalculadora("1");
// etc, etc, etc e adicionar o botao ao form...

O constructor ja vai conectar ao evento click daquela instancia.

//Daniel

Criado 28 de fevereiro de 2012
Ultima resposta 2 de mar. de 2012
Respostas 9
Participantes 5