Я хочу заставить Button Equal повторить последнюю операцию, но не знаю, как это сделать. Я пробовал разные способы сделать это, но не получил правильного ответа. Это мой код формы windows. Я попытался создать переменную, которая запоминает результат, но при использовании этого метода, если я напишу 3 + 3 = 6, а затем снова нажму равное, я получу 12, потому что калькулятор добавляет 6 + 6 вместо 6 + 3.
Double tal = 0;
string operation = "";
bool operationKlickad = false;
public Form1()
{
InitializeComponent();
}
private void button_click(object sender, EventArgs e)
{
if (txbWindow.Text == "0" || operationKlickad)
{
txbWindow.Clear();
}
operationKlickad = false;
Button b = (Button)sender;//Konverterar object sender till en button.
if(b.Text == ",")
{
if(!txbWindow.Text.Contains(","))//Om det inte finns något komma så skriver den det men om det finns händer inget.
txbWindow.Text = txbWindow.Text + b.Text;
}
else
txbWindow.Text = txbWindow.Text + b.Text; // Tar det som står på knappen
}
private void btnCE_Click(object sender, EventArgs e)
{
txbWindow.Text = "0";// tar bort allt i rutan
}
private void operator_click(object sender, EventArgs e)//När man klickar på +, -, * osv...
{
Button b = (Button)sender;
if (tal == 0) // om inte tal är 0. Vilket innebär att man har klickat på en av operatör knapparna igen
{
operation = b.Text;// sparar vilken operation som blir klickad
tal = Double.Parse(txbWindow.Text);//sparar talet som är i rutan
operationKlickad = true;
lblEkvation.Text += tal + " " + operation;
}
else
{
btnEqual.PerformClick(); //turn on equal button
operationKlickad = true;
operation = b.Text;
lblEkvation.Text += tal + " " + operation;//Visar föregående tal och vilken operation
}
}
private void btnEqual_Click(object sender, EventArgs e) //Equalbutton
{
lblEkvation.Text = "";//rensar ekvationen
switch (operation)
{
case "+":
txbWindow.Text = Convert.ToString(tal + Double.Parse(txbWindow.Text)); //sets tbxwindo to the number written plus number in the window
break;
case "-":
txbWindow.Text = Convert.ToString((tal) - Double.Parse(txbWindow.Text));
break;
case "*":
txbWindow.Text = Convert.ToString(tal * Double.Parse(txbWindow.Text));
break;
case "/":
txbWindow.Text = Convert.ToString(tal / Double.Parse(txbWindow.Text));
break;
case "√":
txbWindow.Text = Convert.ToString(Math.Sqrt(Double.Parse(txbWindow.Text)));
break;
case "±":
txbWindow.Text = Convert.ToString(-1 * Double.Parse(txbWindow.Text));
break;
case "1 / X":
txbWindow.Text = Convert.ToString(1 / (Double.Parse(txbWindow.Text)));
break;
default:
break;
}
tal = Double.Parse(txbWindow.Text);
operation = "";
}
private void btnC_Click(object sender, EventArgs e)
{
txbWindow.Text = "0"; //tar bort allt i rutan
tal = 0;//tar bort talet som sparats
lblEkvation.Text = "";
}
private void btnBack_Click(object sender, EventArgs e)
{
txbWindow.Text = txbWindow.Text.Remove(txbWindow.Text.Length - 1); // Tar stringen och tar bort sista karaktären