| Printable Version
C# Calculator Using Delegation
By Raheel Kamal
Here is the source code for a C# based calculator that uses delegation.
using System;
using System.Windows.Forms;
using System.Drawing;
using System.ComponentModel;
namespace TestingDOTNET
{
///
/// Summary description for Form1.
///
public class Form1 : Form
{
private Button button;
private TextBox screenbox;
private String buttonLabel;
private Label label;
private double PreviousNumber;
private double NextNumber;
private double Result;
private bool Nextflg;
private bool Prevflg;
int OP;
///
/// Required designer variable.
///
public Form1()
{
InitializeComponent();
}
[STAThread]
static void Main()
{
Form1 form1=new Form1();
Application.Run(form1);
}
private void InitializeComponent()
{
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(160, 170);
this.Name = "Form1";
this.Text = "Sharp 208";
PreviousNumber=0;
NextNumber=0;
Prevflg = false;
Nextflg = false;
for (int X=0;X<150;X+=40)
for(int Y=50;Y<150;Y+=30)
{
if (Y<150 && X==0)
{
if (Y==50)
CreateNumericPad(X,Y,System.Convert.ToString(3));
else if (Y==80)
CreateNumericPad(X,Y,System.Convert.ToString(2));
else if (Y==110)
CreateNumericPad(X,Y,System.Convert.ToString(1));
else if (Y==140)
CreateNumericPad(X,Y,System.Convert.ToString(0));
}
else if(Y<150 && X==40)
{
if (Y==50)
CreateNumericPad(X,Y,System.Convert.ToString(7));
else if (Y==80)
CreateNumericPad(X,Y,System.Convert.ToString(6));
else if (Y==110)
CreateNumericPad(X,Y,System.Convert.ToString(5));
else if (Y==140)
CreateNumericPad(X,Y,System.Convert.ToString(4));
}
else if(Y<150 && X==80)
{
if (Y==50)
CreateNumericPad(X,Y,System.Convert.ToString("+"));
else if (Y==80)
CreateNumericPad(X,Y,System.Convert.ToString("-"));
else if (Y==110)
CreateNumericPad(X,Y,System.Convert.ToString(9));
else if (Y==140)
CreateNumericPad(X,Y,System.Convert.ToString(8));
}
else if(Y<150 && X==120)
{
if (Y==50)
CreateNumericPad(X,Y,System.Convert.ToString("/"));
else if (Y==80)
CreateNumericPad(X,Y,System.Convert.ToString("*"));
else if (Y==110)
CreateNumericPad(X,Y,System.Convert.ToString("ON"));
else if (Y==140)
CreateNumericPad(X,Y,System.Convert.ToString("="));
}
}
CreateScreen(150,50);
}
public void CreateNumericPad(int X,int Y,String buttonLabel)
{
button = new System.Windows.Forms.Button();
button.Location=new System.Drawing.Point(X,Y);
button.Size = new System.Drawing.Size(40,30);
button.Text = buttonLabel;
Controls.Add(button);
button.Click += new EventHandler(this.button_Clicked);
}
public void CreateScreen(int X,int Y)
{
label = new System.Windows.Forms.Label();
screenbox = new System.Windows.Forms.TextBox();
screenbox.Location = new System.Drawing.Point(0,20);
screenbox.Height = Y;
screenbox.Width = X;
screenbox.MaxLength = 18;
Controls.Add(screenbox);
label.Location = new System.Drawing.Point(0,5);
label.Size = new System.Drawing.Size(100,115);
label.Text = "8 Digits Calculator";
Controls.Add(label);
}
private void button_Clicked(Object sender,EventArgs e)
{
//this.buttonLabel = "BB";
screenbox.TextAlign = HorizontalAlignment.Right;
if (sender is Button)
CheckPosition((Button)sender);
}
private void CheckPosition(Button button)
{
if (button.Location.Y<150 && button.Location.X==0)
{
if (button.Location.Y==50)
ShowValueOnScreen(System.Convert.ToString(3));
else if(button.Location.Y==80)
ShowValueOnScreen(System.Convert.ToString(2));
else if(button.Location.Y==110)
ShowValueOnScreen(System.Convert.ToString(1));
else if(button.Location.Y==140)
ShowValueOnScreen(System.Convert.ToString(0));
}
else if(button.Location.Y<150 && button.Location.X==40)
{
if (button.Location.Y==50)
ShowValueOnScreen(System.Convert.ToString(7));
else if(button.Location.Y==80)
ShowValueOnScreen(System.Convert.ToString(6));
else if(button.Location.Y==110)
ShowValueOnScreen(System.Convert.ToString(5));
else if(button.Location.Y==140)
ShowValueOnScreen(System.Convert.ToString(4));
}
else if(button.Location.Y<150 && button.Location.X==80)
{
if (button.Location.Y==50)
ShowValueOnScreen("+");
else if(button.Location.Y==80)
ShowValueOnScreen("-");
else if(button.Location.Y==110)
ShowValueOnScreen(System.Convert.ToString(9));
else if(button.Location.Y==140)
ShowValueOnScreen(System.Convert.ToString(8));
}
else if(button.Location.Y<150 && button.Location.X==120)
{
if (button.Location.Y==50)
ShowValueOnScreen("/");
else if(button.Location.Y==80)
ShowValueOnScreen("*");
else if(button.Location.Y==110)
ShowValueOnScreen("ON");
else if(button.Location.Y==140)
ShowValueOnScreen("=");
}
}
private void ShowValueOnScreen(String screencontent)
{
if(screencontent != "/" && screencontent != "*" && screencontent != "+" && screencontent != "-" && screencontent != "=" && screencontent != "ON")
{
screenbox.AppendText(screencontent);
}
else
{
CheckOperator(screencontent);
}
}
private void CheckOperator(String screencontent)
{
if(screencontent == "/" || OP==1)
{
OP=1;
if (Prevflg!=true)
{
Prevflg=true;
PreviousNumber = System.Convert.ToDouble(screenbox.Text);
screenbox.Clear();
}//Prevflg
else if(Nextflg!=true)
{
if(screencontent=="=")
{
Nextflg = true;
NextNumber = System.Convert.ToDouble(screenbox.Text);
Prevflg=false;
}//=
}//Nextflg
}//"/"
else if(screencontent == "*" || OP==2)
{
OP=2;
if (Prevflg!=true)
{
Prevflg=true;
PreviousNumber = System.Convert.ToDouble(screenbox.Text);
screenbox.Clear();
}//Prevflg
else if(Nextflg!=true)
{
if(screencontent=="=")
{
Nextflg = true;
NextNumber = System.Convert.ToDouble(screenbox.Text);
Prevflg=false;
}//=
}//Nextflg
}//*
else if(screencontent == "+" || OP==3)
{
OP=3;
if (Prevflg!=true)
{
Prevflg=true;
PreviousNumber = System.Convert.ToDouble(screenbox.Text);
screenbox.Clear();
}//PrevFlag
else if(Nextflg!=true)
{
if(screencontent=="=")
{
Nextflg = true;
NextNumber = System.Convert.ToDouble(screenbox.Text);
Prevflg=false;
}//=
}//Nextflg
}//+
else if(screencontent == "-" || OP==4)
{
OP=4;
if (Prevflg!=true)
{
Prevflg=true;
PreviousNumber = System.Convert.ToDouble(screenbox.Text);
screenbox.Clear();
}//Prevflg
else if(Nextflg!=true)
{
if(screencontent=="=")
{
Nextflg = true;
NextNumber = System.Convert.ToDouble(screenbox.Text);
Prevflg=false;
}//=
}//NextFlg
}//-
else if(screencontent == "ON")
{
screenbox.Clear();
//ShowValueOnScreen(System.Convert.ToString(0));
}
if(screencontent=="=")
{
if(OP==1)
{
if (NextNumber > 0.0)
{
Result = PreviousNumber / NextNumber;
screenbox.Clear();
ShowValueOnScreen(System.Convert.ToString(Result));
Nextflg=false;
Result=0;
PreviousNumber=0;
NextNumber=0;
OP=0;
}
}//OP1
if(OP==2)
{
Result = PreviousNumber * NextNumber;
screenbox.Clear();
ShowValueOnScreen(System.Convert.ToString(Result));
Nextflg=false;
Result=0;
PreviousNumber=0;
NextNumber=0;
OP=0;
}//OP2
if(OP==3)
{
Result = PreviousNumber + NextNumber;
screenbox.Clear();
ShowValueOnScreen(System.Convert.ToString(Result));
Nextflg=false;
Result=0;
PreviousNumber=0;
NextNumber=0;
OP=0;
}//OP3
if(OP==4)
{
Result = PreviousNumber - NextNumber;
screenbox.Clear();
ShowValueOnScreen(System.Convert.ToString(Result));
Nextflg=false;
Result=0;
PreviousNumber=0;
NextNumber=0;
OP=0;
}//OP4
}//ScreenContent
}
}
}
|