Atribuir valor em botões C#

9 respostas
Rezende

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

Nicolas_Fernandes

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!

Roger75

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

Rezende

Fala galera !

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

Valeu !

Rezende

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

Jhonny_Oliveira

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


    }
}
Nicolas_Fernandes

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

Rezende

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

Rezende

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