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.
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
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);
}
É 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…
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.