برای اطلاع از عمل قبلی هم میتونی اونو تو یه متغیر ذخیره کنی
یعنی اینطوری:
واسه اعداد صفر تا 9، همچین کدی رو در Event شون مینویسیم
private void button9_Click( object sender , EventArgs e )
{
if ( clear == true )
{
textBox1.Text = "";
clear = false;
}
textBox1.Text += "9";
}
واسه چهار عمل اصلی و مساوی، این کد:
private void buttonSubtrac_Click( object sender , EventArgs e )
{
CheckOp( '-' );
}
private void buttonEqual_Click( object sender , EventArgs e )
{
CheckOp( '=' );
}
یکسری متغیر عمومی هم داریم
char PrevOperator;
int result;
bool clear;
public Form1()
{
InitializeComponent();
textBox1.ReadOnly = true;
KeyPreview = true;
textBox1.Text = "0";
PrevOperator=' ';
result = 0;
clear = true;
}
CheckOp : روالی که چهار عمل اصلی رو کنترل میکنه و منتیجه نهایی رو نشون میده.
Clear: تعیین میکنه که محتوای TextBox پاک بشه، یا نه
PrevOp: آخرین عملگر، رو نگه میداره.
result: نتیجه نهایی محاسبه رو نگه میداره.
روال CheckOp هم اینطور عمل میکنه
public void CheckOp(Char op)
{
switch (PrevOperator )
{
case '+' :
result += Convert.ToInt32( textBox1.Text );
break;
case '-':
result -= Convert.ToInt32( textBox1.Text );
break;
case '*':
result *= Convert.ToInt32( textBox1.Text );
break;
case '/':
result *= Convert.ToInt32( textBox1.Text );
break;
default :
result = Convert.ToInt32( textBox1.Text );
break;
}
PrevOperator = op;
clear = true;
textBox1.Text = Convert.ToString( result );
}
هر بار که عملگری رو فشار میدی، بر اساس عملگر قبلی، نتیجه رو محاسبه و در result ذخیره میکنه و اونرو در textbox نشون میده و clear رو طوری ست میکنه که با فشار اعداد، محتوای قبلی textbox بر داشته بشه و اعداد جدید تایپ بشن ( عطف به جمله زیر)
سپس منتظر عدد بعدی باشه؟
منظورم اینه که نمیخوام حتما با کلید مساوی نتیجه حساب بشه میخوام با کلیدهایی که چهار عمل اصلی را انجام میدهند هم نتیجه حساب بشه