-
-
Save Pan-Maciek/4f5f90916ce36f110dd7777e67ef8fa3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Data; | |
using System.Windows.Forms; | |
namespace Calculator { | |
public partial class Calculator : Form { | |
public Calculator() { | |
InitializeComponent(); | |
KeyPreview = true; | |
} | |
private void addToDisplay(string number) { | |
if (display.Text == "Enter formula" || display.Text == "Too long formula" || display.Text == "Unexpected Error") { | |
display.Text = number; | |
} else if (display.Text.Length < 10) { | |
display.Text += number; | |
} | |
if (display.Text.Length == 10) { | |
display.Text = "Too long formula"; | |
} | |
} | |
private void calculate() { | |
string fromDisplay = display.Text; | |
try { | |
DataTable dt = new DataTable(); | |
var v = dt.Compute(fromDisplay, ""); | |
double result = double.Parse(v.ToString()); | |
result = Math.Round(result, 3); | |
display.Text = result.ToString().Replace(",", "."); | |
} catch { | |
display.Text = "Unexpected Error"; | |
} | |
} | |
private void numberClick(object sender, EventArgs e) { | |
addToDisplay(((Button)sender).Text); | |
} | |
private void calcClick(object sender, EventArgs e) { | |
calculate(); | |
} | |
private void clearClick(object sender, EventArgs e) { | |
display.Text = "Enter formula"; | |
} | |
private void Calculator_KeyDown(object sender, KeyEventArgs e) { | |
switch (e.KeyCode) { | |
case Keys.Enter: | |
calculate(); | |
break; | |
case Keys.Back: | |
display.Text = "Enter formula"; | |
break; | |
} | |
} | |
private void Calculator_KeyPress(object sender, KeyPressEventArgs e) { | |
if (char.IsDigit(e.KeyChar)) | |
addToDisplay($"{e.KeyChar}"); | |
else switch (e.KeyChar) { | |
case '*': | |
case '/': | |
case '+': | |
case '-': | |
case '.': | |
addToDisplay($"{e.KeyChar}"); | |
break; | |
case ',': | |
addToDisplay("."); | |
break; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment