Reader Level:
ARTICLE

Resizable Calculator using C#

On April 22, 2004 Articles | Windows Forms C#
This application is a scientific calculator, which is resizable and performs some basic operations like addition, subtraction, multiplication, division and some trigonometric functions.
  • 0
  • 0
  • 22799
Download Files:
 

This application is a scientific calculator, which is resizable and performs some basic operations like addition, subtraction, multiplication, division and some trigonometric functions.

The application is a windows application with a textbox to display results and a number of buttons for the numbers and functions on it.

Screen Shots: Figure 1 shows the screen shot of the normal calculator. Figure 2 shows the resized one. As is clear from Figure 2, on stretching the form all the controls on it get resized accordingly.

Figure 1.

Figure 2.

The main functions performing the operations are as shown in the code below:

private void Form1_Resize(object sender, System.EventArgs e)
{
int rtopButton = ClientRectangle.Height/5;
foreach (Control ct in this.Controls)
{
if (ct is TextBox)
{
Rectangle rdisp =
new Rectangle();
rdisp.Width = ClientRectangle.Width;
rdisp.Height = ClientRectangle.Height/7;
rdisp.Inflate(-10,-10);
SetControlSize(ct,rdisp);
}
if (ct is Button)
{
int ypos = int.Parse(ct.Name[ct.Name.Length-1].ToString());
int xpos = int.Parse(ct.Name[ct.Name.Length-2].ToString());
Rectangle rbt =
new Rectangle();
rbt.Width = ClientRectangle.Width/5;
rbt.Height = ClientRectangle.Height/8;
Point ptopleft =
new Point(ypos*ClientRectangle.Width/5, xpos*ClientRectangle.Height/8);
rbt.Location = ptopleft;
rbt.Inflate(-10,-10);
SetControlSize(ct,rbt);
}
}
}
private void SetControlSize(Control ct, Rectangle rc)
{ ct.Width = rc.Width;
ct.Height = rc.Height;
ct.Location = rc.Location;
}
private void Numeric_Click(object sender, System.EventArgs e)
{
Button bt = (Button) sender;
if (clrDisplay)
{
lblResult00.Text="";
clrDisplay = false;
}
if (bt.Text == ".")
{
if ((lblResult00.Text.IndexOf(".",0) >= 0))
bt.Text = "";
}
lblResult00.Text = lblResult00.Text + bt.Text;
}
private void OperationClick(object sender, System.EventArgs e)
{
Button btnOp = (Button) sender;
tring op = btnOp.Text;
double result=0.0;
clrDisplay =
true; // clear display on next numeric click
if (prevOP == "")
num1 =
double.Parse(lblResult00.Text);
else
num2 = double.Parse(lblResult00.Text);
switch(op)
{
case "Sin" : result = Math.Sin(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Cos" : result = Math.Cos(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Tan" : result = Math.Tan(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Sinh" : result = Math.Sinh(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Cosh" : result = Math.Cosh(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Tanh" : result = Math.Tanh(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Asin" : result = Math.Asin(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Acos" : result = Math.Acos(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Atan" : result = Math.Atan(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Atan2" : result = Math.Atan(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "e" : result = Math.E;
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
break;
case "PI" : result = Math.PI;
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
break;
case "Log10" : result = Math.Log10(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "1/X" :
if (num1 != 0)
{
num1 = 1/num1;
result = num1;
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
}
break;
case "X^2":
num1 *= num1;
result = num1;
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "X^3":
num1 *= num1;
num1 *= num1;
result = num1;
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Log":
result = Math.Log(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
case "Sqrt":
result = Math.Sqrt(num1);
prevOP="";
lblResult00.Text = result.ToString();
num1 = result;
return;
}
switch (prevOP)
{
case "+" :
result = num1 + num2;
break;
case "-" :
result = num1 - num2;
break;
case "*" :
result = num1 * num2;
break;
case "/" :
result = num1 / num2;
break;
}
if (prevOP != "")
{ lblResult00.Text = result.ToString();
num1 = result;
}
if (op == "=")
prevOP = "";
else
prevOP = op;
}
}

shru27

I have done Master's in Computer Science. Also I am Microsoft Certified Application Developer (MCAD .NET). I am working in Visual C# .NET from last two years.

  • 489rank
  • 523K readers
COMMENT USING

Trending up