using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics.Eventing.Reader; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ElementaryMathematics { public partial class Form1 : Form { private bool isAdd = false; private bool isSubtract = false; private bool isMultiply = false; private bool isDivide = false; private Int32 numRunningCorrect = 0; private Int32 numRunningIncorrect = 0; private bool hasTried = false; public Form1() { InitializeComponent(); pnlSummary.Visible = false; lblNumCorrect.Text = "0"; lblNumIncorrect.Text = "0"; UpdateButtons(); } private void groupBox1_Enter(object sender, EventArgs e) { // throw new System.NotImplementedException(); } private void radioButton1_CheckedChanged(object sender, EventArgs e) { // throw new System.NotImplementedException(); } private void chkSummary_CheckedChanged(object sender, EventArgs e) { if (chkShowSummary.Checked) { pnlSummary.Visible = true; } else { pnlSummary.Visible = false; } } private void button1_Click(object sender, EventArgs e) { // throw new System.NotImplementedException(); } private void ChangeOperator(string op) { isAdd = false; isSubtract = false; isMultiply = false; isDivide = false; if (op == "+") { isAdd = true; lblOperator.Text = op; }else if (op == "-") { isSubtract = true; lblOperator.Text = op; }else if (op == "*") { isMultiply = true; lblOperator.Text = op; }else if (op == "/") { isDivide = true; lblOperator.Text = op; } else { lblOperator.Text = ""; } } private void rdoAddition_CheckedChanged(object sender, EventArgs e) { ChangeOperator("+"); } private void rdoSubtraction_CheckedChanged(object sender, EventArgs e) { ChangeOperator("-"); } private void rdoMultiplication_CheckedChanged(object sender, EventArgs e) { ChangeOperator("*"); } private void rdoDivision_CheckedChanged(object sender, EventArgs e) { ChangeOperator("/"); } private void btnExit_Click(object sender, EventArgs e) { Close(); } private ErrorProvider ep1 = new ErrorProvider(); private decimal Calculate(decimal a, decimal b, decimal c) { decimal answer = 0; try { if (isAdd) { answer = a + b; hasTried = true; }else if (isSubtract) { answer = a - b; hasTried = true; }else if (isMultiply) { answer = a * b; hasTried = true; }else if (isDivide) { answer = a / b; hasTried = true; } else { throw new Exception(); } } catch (Exception e) { MessageBox.Show("Whoops!"); } return answer; } private void Win() { lblMessage.Text = "Good Job!"; numRunningCorrect++; lblNumCorrect.Text = numRunningCorrect.ToString(); } private void Fail() { lblMessage.Text = "Try Again"; numRunningIncorrect++; lblNumIncorrect.Text = numRunningIncorrect.ToString(); } private void btnChkAnswer_Click(object sender, EventArgs e) { ep1.Clear(); decimal a = 0; decimal b = 0; decimal c = 0; try { a = decimal.Parse(txtA.Text); try { b = decimal.Parse(txtB.Text); try { c = decimal.Parse(txtC.Text); try { if (c == Calculate(a,b,c)) { Win(); } else { Fail(); } } catch (Exception exception) { ep1.SetError(btnChkAnswer, "Calculation Error"); } } catch (Exception exception) { ep1.SetError(txtC, "Invalid Value"); } } catch (Exception exception) { ep1.SetError(txtB, "Invalid Value"); } } catch (Exception exception) { ep1.SetError(txtA, "Invalid Value"); } UpdateButtons(); } private void txtA_TextChanged(object sender, EventArgs e) { ep1.Clear(); hasTried = false; UpdateButtons(); } private void txtB_TextChanged(object sender, EventArgs e) { ep1.Clear(); hasTried = false; UpdateButtons(); } private void txtC_TextChanged(object sender, EventArgs e) { ep1.Clear(); hasTried = false; UpdateButtons(); lblMessage.Text = ""; } private void btnClear_Click(object sender, EventArgs e) { txtA.Clear(); txtB.Clear(); txtC.Clear(); UpdateButtons(); } private void btnReset_Click(object sender, EventArgs e) { btnClear_Click(sender, e); numRunningCorrect = 0; numRunningIncorrect = 0; UpdateButtons(); rdoAddition.Select(); } private void UpdateButtons() { if (txtA.TextLength > 0 && txtB.TextLength > 0 && txtC.TextLength > 0) { btnChkAnswer.Enabled = true; } else { btnChkAnswer.Enabled = false; } if (hasTried) { btnShowCorrectAnswer.Enabled = true; } else { btnShowCorrectAnswer.Enabled = false; } if (txtA.TextLength > 0 || txtB.TextLength > 0 || txtC.TextLength > 0) { btnClear.Enabled = true; } else { btnClear.Enabled = false; } if (numRunningCorrect > 0 || numRunningIncorrect > 0) { btnReset.Enabled = true; } else { btnReset.Enabled = false; } } } }