Как написать калькулятор, подобный калькулятору в Windows - C#
Формулировка задачи:
нужно сделать так как в майкрософте виндоуз калькулятор чтобы все функции как и там чтобы все было ваот код отредактируйте пож его что там неверно если че и скиньте
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace CalculatorPPPI
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
CurrentState = state.nonstate;
}
#region variables
string buff;//some operanions +-*/
state CurrentState;//state
string memory = "";//operations with memory
string memory2 = "";//tool strip memory operations
double buff2;
bool changetxt = true;
enum state
{
substraction,
addiction,
multiplication,
divide,
nonstate
}
#endregion
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)))
{
if (e.KeyChar == '.' || e.KeyChar == ',' || e.KeyChar == (char)Keys.Back)
{
if (e.KeyChar == (char)Keys.Back)
{
}
else
if (textBox1.Text.Contains(",") || textBox1.Text.Contains("."))
{
e.Handled = true;
}
}
else
{
e.Handled = true;
}
}
}//запрет на ввод букв(только цифры и знаки)
private void button16_Click(object sender, EventArgs e)
{
vypolnenie();
/* try
{
if (changetxt ==true)
buff2 = double.Parse(textBox1.Text);
if (CurrentState == state.divide)
{
//CurrentState = state.nonstate;
//textBox1.Text = double.Parse(buff).ToString() + "/" + double.Parse(textBox1.Text) + "=";
textBox1.Text = (double.Parse(buff) / buff2).ToString();
}
if (CurrentState == state.multiplication)
{
// CurrentState = state.nonstate;
//textBox1.Text = double.Parse(buff).ToString() + "*" + double.Parse(textBox1.Text) + "=";
textBox1.Text = (double.Parse(buff) * buff2).ToString();
}
if (CurrentState == state.substraction)
{
//CurrentState = state.nonstate;
//textBox1.Text = double.Parse(buff).ToString() + "-" + double.Parse(textBox1.Text) + "=";
textBox1.Text = (double.Parse(buff) - buff2).ToString();
}
if (CurrentState == state.addiction)
{
// CurrentState = state.nonstate;
//textBox1.Text = double.Parse(buff).ToString() + "+" + double.Parse(textBox1.Text) + "=";
textBox1.Text = (double.Parse(buff) + buff2).ToString();
}
buff = textBox1.Text;
}
catch (Exception)
{
MessageBox.Show("Try input incorrect data");
}
changetxt = false;*/
}//=
#region арифметические действия(нажатия не кнопки)
private void multiplicationButton_Click(object sender, EventArgs e)
{
if (CurrentState == state.nonstate)
{
CurrentState = state.multiplication;
buff = textBox1.Text;
textBox1.Text = "";
textBox1.Focus();//focus on textbox1 and clear it
}
}//умножение
private void subtractionButton_Click(object sender, EventArgs e)
{
if (CurrentState == state.nonstate)
{
CurrentState = state.substraction;
buff = textBox1.Text;
textBox1.Text = "";
textBox1.Focus();//focus on textbox1 and clear it
}
}//вычитание
private void divideButton_Click(object sender, EventArgs e)
{
if (CurrentState == state.nonstate)
{
CurrentState = state.divide;
buff = textBox1.Text;
textBox1.Text = "";
textBox1.Focus();//focus on textbox1 and clear it
}
}//деление
private void additionButton_Click(object sender, EventArgs e)
{
if (CurrentState == state.nonstate)
{
CurrentState = state.addiction;
buff = textBox1.Text;
textBox1.Text = "";
textBox1.Focus();//focus on textbox1 and clear it
}
}//сложение
private void sqrtButton_Click(object sender, EventArgs e)//извлечение квадратного корня
{
try
{
if (textBox1.Text.Length > 0)
{
textBox1.Text = Math.Sqrt(double.Parse(textBox1.Text)).ToString();
}
}
catch (Exception) { }
}
private void percentButton_Click(object sender, EventArgs e)
{
try
{
textBox1.Text = (1 / double.Parse(textBox1.Text)).ToString();//);
}
catch (Exception) { }
}//1/x
private void dividedByOneButton_Click(object sender, EventArgs e)
{
try
{
textBox1.Text = (Math.Pow(double.Parse(textBox1.Text.Replace('.',',')), 2)).ToString();//x^2
}
catch (Exception)
{
MessageBox.Show("Попытайтесь ввести корректные для\nданной операции данные и повторите", "Калькулятор", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}//x^2
private void ClearButton_Click(object sender, EventArgs e)
{
textBox1.Clear();
}//clear
private void ClearAllButton_Click(object sender, EventArgs e)//reset all
{
textBox1.Clear();
CurrentState = state.nonstate;
buff = "";
}
private void BackspaceButton_Click(object sender, EventArgs e)
{
try
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
}
catch (Exception) { }
}//-1 symbol
private void button22_Click(object sender, EventArgs e)
{
textBox1.Text = memory;
}//get from memory
private void копироватьToolStripMenuItem_Click(object sender, EventArgs e)//ctrl+C
{
memory2 = textBox1.Text;
}
private void вставитьToolStripMenuItem_Click(object sender, EventArgs e)
{
textBox1.Text = memory2;
}//ctrl+V
private void buttonPlusMinus_Click(object sender, EventArgs e)
{
try
{
textBox1.Text = (double.Parse(textBox1.Text) * (-1)).ToString();
}
catch (Exception) { }
}
#region numbers
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text += "1";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text += "2";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button3_Click(object sender, EventArgs e)
{
textBox1.Text += "3";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button4_Click(object sender, EventArgs e)
{
textBox1.Text += "4";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button5_Click(object sender, EventArgs e)
{
textBox1.Text += "5";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button6_Click(object sender, EventArgs e)
{
textBox1.Text += "6";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button7_Click(object sender, EventArgs e)
{
textBox1.Text += "7";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button8_Click(object sender, EventArgs e)
{
textBox1.Text += "8";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button9_Click(object sender, EventArgs e)
{
textBox1.Text += "9";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void button0_Click(object sender, EventArgs e)
{
textBox1.Text += "0";
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
}
private void buttonOEMComma_Click(object sender, EventArgs e)
{
if (textBox1.Text.IndexOf(',') == -1)
{
textBox1.Text += ",";
textBox1.Focus();
}
}
#endregion
private void Form1_Load(object sender, EventArgs e)
{
}
#endregion
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
changetxt = true;
}
private void vypolnenie()
{
try
{
if (changetxt ==true)
buff2 = double.Parse(textBox1.Text);
if (CurrentState == state.divide)
{
//CurrentState = state.nonstate;
//textBox1.Text = double.Parse(buff).ToString() + "/" + double.Parse(textBox1.Text) + "=";
textBox1.Text = (double.Parse(buff) / buff2).ToString();
}
if (CurrentState == state.multiplication)
{
// CurrentState = state.nonstate;
//textBox1.Text = double.Parse(buff).ToString() + "*" + double.Parse(textBox1.Text) + "=";
textBox1.Text = (double.Parse(buff) * buff2).ToString();
}
if (CurrentState == state.substraction)
{
//CurrentState = state.nonstate;
//textBox1.Text = double.Parse(buff).ToString() + "-" + double.Parse(textBox1.Text) + "=";
textBox1.Text = (double.Parse(buff) - buff2).ToString();
}
if (CurrentState == state.addiction)
{
// CurrentState = state.nonstate;
//textBox1.Text = double.Parse(buff).ToString() + "+" + double.Parse(textBox1.Text) + "=";
textBox1.Text = (double.Parse(buff) + buff2).ToString();
}
buff = textBox1.Text;
}
catch (Exception)
{
MessageBox.Show("Try input incorrect data");
}
changetxt = false;
}
}
}Решение задачи: «Как написать калькулятор, подобный калькулятору в Windows»
textual
Листинг программы
private void button1_Click private void button2_Click private void button3_Click private void button4_Click private void button5_Click private void button6_Click private void button7_Click private void button8_Click private void button9_Click private void button0_Click