Ir ao conteúdo
  • Cadastre-se

Calculadora .Net


Giulliano Santos

Posts recomendados

Ola pessoal estou construindo essa calculadora em c#, para aprender mais sobre as delegates, porém não estou conseguindo colocar os numeros no txtDisplay.Text.

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 Calculadora.Net
{
public partial class Form1 : Form
{
private enum OperadorFlag {Nome, Plus, Minus, Multiplay, Divide};
private enum KeyType {Nome,Number,Plus,Cancel,Operator,Equal};
private OperadorFlag OperadorType;
private float value1 = 0;
private float value2 = 0;

public Form1()
{
InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)
{
int j=0;

//Gera os buttons no form
for (int i=0; i < 9; i++)
{
j = (int)(i / 3);
this.addButton(25+(i % 3)*50, 50 + ((2 - j) * 50), (i + 1).ToString(), KeyType.Number);
}

this.addButton(25, 200, "0", KeyType.Number);
this.addButton(75, 200, "c", KeyType.Cancel);
this.addButton(125, 200, "=", KeyType.Operator);
this.addButton(175, 50, "+", KeyType.Operator);
this.addButton(175, 100, "-", KeyType.Operator);
this.addButton(175, 150, "*", KeyType.Operator);
this.addButton(175, 200, "/", KeyType.Operator);
}


private void addButton(int Left, int Top, string Key, KeyType Type)
{
// Cria o novo button no form
Button newButton = new Button();
this.Controls.Add(newButton);
// Passa as caracteristicas dos buttons para a posição no form
newButton.Top = Top;
newButton.Left = Left;
newButton.Width = 35;
newButton.Height = 35;
newButton.Text = Key;

//Associa os eventos ao seus respectivos buttons
switch (Type)
{
case KeyType.Number:
newButton.Click += new System.EventHandler (NumberClick);
break;
case KeyType.Operator:
newButton.Click += new System.EventHandler(OperadorClick);
break;
case KeyType.Equal :
newButton.Click += new System.EventHandler(EqualClick);
break;
case KeyType.Cancel:
newButton.Click += new System.EventHandler(CancelClick);
break;
}

}
public void NumberClick(Object sender, System .EventArgs e)
{
string key = ((Button)sender).Text;
value1 = value1 * 10 + int.Parse(key);
txtDisplay.Text = " 0";
}
public void CancelClick(Object sender, System.EventArgs e)
{
value1 = 0;
value2 = 0;
txtDisplay.Text = " 0";
}
public void OperadorClick(Object sender, System.EventArgs e)
{
string key = ((System.Windows.Forms.Button)sender).Text;
switch (key)
{
case "+":
OperadorType = OperadorFlag.Plus;
break;
case "-":
OperadorType = OperadorFlag.Minus;
break;
case "*":
OperadorType = OperadorFlag.Multiplay;
break;
case "/":
OperadorType = OperadorFlag.Divide;
break;
}
value2 = value1;
value1 = 0;
}
public void EqualClick(Object sender, System.EventArgs e)
{
switch (OperadorType)
{
case OperadorFlag .Plus :
value1 = value2 + value1;
break;
case OperadorFlag .Minus :
value1 = value2 - value1;
break;
case OperadorFlag .Multiplay :
value1 = value2 * value1;
break;
case OperadorFlag .Divide :
value1 = value2 / value1;
break;
}
OperadorType = OperadorFlag .Nome ;
txtDisplay .Text = value1.ToString ();
value2 =0;
}

}
}

Obrigado, Alguma sugestão.

Link para o comentário
Compartilhar em outros sites

Pelo que eu reparei você cometeu um erro nessa parte:

this.addButton(125, 200, "=", KeyType.Operator);

O certo seria :


this.addButton(125, 200, "=", KeyType.Equal)

E aqui também:

public void NumberClick(Object sender, System .EventArgs e)

{

string key = ((Button)sender).Text;

value1 = value1 * 10 + int.Parse(key);

txtDisplay.Text = " 0";

}

E o certo seria:


public void NumberClick(Object sender, System .EventArgs e)
{
string key = ((Button)sender).Text;
value1 = value1 * 10 + int.Parse(key);
txtDisplay.Text = value1.ToString();

}

Poste o resultado.

Link para o comentário
Compartilhar em outros sites

O meu amigo tava errado mesmo,

deu certo... muito Obrigado pela ajuda....

Agora está perfeita!

Obrigado!!!


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 Calculadora.Net
{
public partial class Form1 : Form
{
private enum OperadorFlag {Nome, Plus, Minus, Multiplay, Divide};
private enum KeyType {Nome,Number,Plus,Cancel,Operator,Equal};
private OperadorFlag OperadorType;
private float value1 = 0;
private float value2 = 0;

public Form1()
{
InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)
{
int j=0;

//Gera os buttons no form
for (int i=0; i < 9; i++)
{
j = (int)(i / 3);
this.addButton(25+(i % 3)*50, 50 + ((2 - j) * 50), (i + 1).ToString(), KeyType.Number);
}

this.addButton(25, 200, "0", KeyType.Number);
this.addButton(75, 200, "c", KeyType.Cancel);
this.addButton(125, 200, "=", KeyType.Equal);
this.addButton(175, 50, "+", KeyType.Operator);
this.addButton(175, 100, "-", KeyType.Operator);
this.addButton(175, 150, "*", KeyType.Operator);
this.addButton(175, 200, "/", KeyType.Operator);
}


private void addButton(int Left, int Top, string Key, KeyType Type)
{
// Cria o novo button no form
Button newButton = new Button();
this.Controls.Add(newButton);
// Passa as caracteristicas dos buttons para a posição no form
newButton.Top = Top;
newButton.Left = Left;
newButton.Width = 35;
newButton.Height = 35;
newButton.Text = Key;

//Associa os eventos ao seus respectivos buttons
switch (Type)
{
case KeyType.Number:
newButton.Click += new System.EventHandler (NumberClick);
break;
case KeyType.Operator:
newButton.Click += new System.EventHandler(OperadorClick);
break;
case KeyType.Equal :
newButton.Click += new System.EventHandler(EqualClick);
break;
case KeyType.Cancel:
newButton.Click += new System.EventHandler(CancelClick);
break;
}

}
public void NumberClick(Object sender, System .EventArgs e)
{
string key = ((Button)sender).Text;
value1 = value1 * 10 + int.Parse(key);
txtDisplay.Text = value1.ToString();

}
public void CancelClick(Object sender, System.EventArgs e)
{
value1 = 0;
value2 = 0;
txtDisplay.Text = " 0";
}
public void OperadorClick(Object sender, System.EventArgs e)
{
string key = ((System.Windows.Forms.Button)sender).Text;
switch (key)
{
case "+":
OperadorType = OperadorFlag.Plus;
break;
case "-":
OperadorType = OperadorFlag.Minus;
break;
case "*":
OperadorType = OperadorFlag.Multiplay;
break;
case "/":
OperadorType = OperadorFlag.Divide;
break;
}
value2 = value1;
value1 = 0;
}
public void EqualClick(Object sender, System.EventArgs e)
{
switch (OperadorType)
{
case OperadorFlag .Plus :
value1 = value2 + value1;
break;
case OperadorFlag .Minus :
value1 = value2 - value1;
break;
case OperadorFlag .Multiplay :
value1 = value2 * value1;
break;
case OperadorFlag .Divide :
value1 = value2 / value1;
break;
}
OperadorType = OperadorFlag .Nome ;
txtDisplay .Text = value1.ToString ();
value2 =0;
}

}
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.