I am making a simple calculator. Till now I have been successfully able to implement some basic features in my calculator. Take a look at the code
public double num1 { get; set; }
public double num2 { get; set; }
public string op { get; set; }
// public bool checker { get; set; }
private void ButtonBase_OnClick1(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button1.Content.ToString();
ShowTextBlock.Text += Button1.Content.ToString();
}
private void ButtonBase_OnClick2(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button2.Content.ToString();
ShowTextBlock.Text += Button2.Content.ToString();
}
private void ButtonBase_OnClick3(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button3.Content.ToString();
ShowTextBlock.Text += Button3.Content.ToString();
}
private void ButtonBase_OnClick4(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button4.Content.ToString();
ShowTextBlock.Text += Button4.Content.ToString();
}
private void ButtonBase_OnClick5(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button5.Content.ToString();
ShowTextBlock.Text += Button5.Content.ToString();
}
private void ButtonBase_OnClick6(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button6.Content.ToString();
ShowTextBlock.Text += Button6.Content.ToString();
}
private void ButtonBase_OnClick7(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button7.Content.ToString();
ShowTextBlock.Text += Button7.Content.ToString();
}
private void ButtonBase_OnClick8(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button8.Content.ToString();
ShowTextBlock.Text += Button8.Content.ToString();
}
private void ButtonBase_OnClick9(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button9.Content.ToString();
ShowTextBlock.Text += Button9.Content.ToString();
}
private void ButtonBase_OnClick0(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Button0.Content.ToString();
ShowTextBlock.Text += Button0.Content.ToString();
}
private void ButtonBase_OnClickdot(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Buttondot.Content.ToString();
ShowTextBlock.Text += Buttondot.Content.ToString();
}
private void ButtonBase_OnClickobrac(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Buttonobrac.Content;
ShowTextBlock.Text += Buttonobrac.Content.ToString();
}
private void ButtonBase_OnClickcbrac(object sender, RoutedEventArgs e)
{
CalculateTextBlock.Text += Buttoncbrac.Content;
ShowTextBlock.Text += Buttoncbrac.Content.ToString();
}
//private void ButtonBase_OnClickinf(object sender, RoutedEventArgs e)
//{
// CalculateTextBlock.Text += ("0/0").ToString();
// ShowTextBlock.Text += "Inf.";
//}
private void ButtonBase_OnClickplus(object sender, RoutedEventArgs e)
{
//num1 += double.Parse(CalculateTextBlock.Text);
num1 = Convert.ToDouble(CalculateTextBlock.Text);
op = "plus";
CalculateTextBlock.Text = "";
ShowTextBlock.Text += "+";
}
private void ButtonBase_OnClickminus(object sender, RoutedEventArgs e)
{
num1 += double.Parse(CalculateTextBlock.Text);
op = "sub";
CalculateTextBlock.Text = "";
ShowTextBlock.Text += "-";
}
private void ButtonBase_OnClickmul(object sender, RoutedEventArgs e)
{
num1 += double.Parse(CalculateTextBlock.Text);
op = "mul";
CalculateTextBlock.Text = "";
ShowTextBlock.Text += "*";
}
private void ButtonBase_OnClickdiv(object sender, RoutedEventArgs e)
{
num1 += double.Parse(CalculateTextBlock.Text);
op = "div";
CalculateTextBlock.Text = "";
ShowTextBlock.Text += "/";
}
private void ButtonBase_OnClickequal(object sender, RoutedEventArgs e)
{
switch (op)
{
case "plus" :
//num2 = num1 + double.Parse(CalculateTextBlock.Text);
num2 = num1 + Convert.ToDouble(CalculateTextBlock.Text);
break;
case "sub":
num2 = num1 - double.Parse(CalculateTextBlock.Text);
break;
case "mul":
num2 = num1*double.Parse(CalculateTextBlock.Text);
break;
case "div":
num2 = num1/double.Parse(CalculateTextBlock.Text);
break;
}
CalculateTextBlock.Text = num2.ToString();
num1 = 0;
ShowTextBlock.Text = "";
}
private void ButtonBase_OnClickclear(object sender, RoutedEventArgs e)
{
num1 = 0;
num2 = 0;
ShowTextBlock.Text = "";
CalculateTextBlock.Text = "";
}
The problem occurs when I insert brackets into the calculatetextbox. It throws a FormatException at the parsing. Is there any way I can implement BIDMAS here?
Note: I have tried both parsing and converting methods {int.parse and convert}
Any help is appreciated. Thanks