Atribuir valor em botões C#

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

1 curtida

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!

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

Fala galera !

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

Valeu !

Fala galera !

Então tentei fazer isso porem me aparece varios erros o codigo esta assim

[code]
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;
    }


}

}[/code]

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 :smiley:

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


    }
}

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:

[code]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;
    }
}

}
[/code]

É 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!!

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

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

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