Skip to content

Instantly share code, notes, and snippets.

@Pan-Maciek
Created February 8, 2017 23:44
Show Gist options
  • Save Pan-Maciek/4f5f90916ce36f110dd7777e67ef8fa3 to your computer and use it in GitHub Desktop.
Save Pan-Maciek/4f5f90916ce36f110dd7777e67ef8fa3 to your computer and use it in GitHub Desktop.
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