
Kalkulačka C# - řešení problému
Zdravím, chtěl bych se zeptat nějakého znalého na jeden problém s kalkulačkou v C#. Máme mít na příští hodinu programování vytvořenou kalkulačku. Tu již mám, avšak bych potřeboval vyřešit jeden problém. Ten se týká výpočtu. Přesněji, aby po výpočtu (po kliknutí na tlačítko = ) se vypnuly všechny tlačítka kromě buttonu C. Který by následně vymazal vypočtený příklad a opět zapnul ostatní tlačítka. Vím, že je to stupidně napsané, ale snad se v tom vyznáte. Přihazuji kód programu. V programování se moc nevyznám :(.
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int clear = 1; decimal result; string op;
decimal eval(string op)
{
clear = 1;
try
{
switch (op)
{
case "+": result = result + Convert.ToDecimal(label1.Text);
break;
case "-": result = result - Convert.ToDecimal(label1.Text);
break;
case "/": result = result / Convert.ToDecimal(label1.Text);
break;
case "*": result = result * Convert.ToDecimal(label1.Text);
break;
default: result = Convert.ToDecimal(label1.Text);
break;
}
}
catch (System.OverflowException) { label2.Text = ""; label2.Text = "overflow"; clear = 2; SystemSounds.Asterisk.Play(); }
catch (System.DivideByZeroException) { label2.Text = ""; label2.Text = "Nelze dělit nulou!"; clear = 2; SystemSounds.Asterisk.Play(); }
return result;
}
int Clear(int cl)
{
switch (cl)
{
case 1:
{
label1.Text = "";
}
break;
case 2:
{
label1.Text = ""; label2.Text = ""; op = "";
}
break;
case 3:
{
label1.Text = ""; label2.Text = label2.Text.Remove(label2.Text.IndexOf('r'));
}
break;
case 4:
{
label1.Text = ""; label2.Text = label2.Text.Remove(label2.Text.IndexOf('s'));
}
break;
case 5:
{
label1.Text = ""; label2.Text = label2.Text.Remove(label2.Text.LastIndexOf(' ') + 1);
}
break;
}
return 0;
}
private void button2_Click(object sender, EventArgs e)
{
clear = Clear(clear);
if (label1.Text.Length < 28)
label1.Text = label1.Text + "0";
else SystemSounds.Beep.Play();
}
private void button5_Click(object sender, EventArgs e)
{
clear = Clear(clear);
if (label1.Text.Length < 28)
label1.Text = label1.Text + "1";
else SystemSounds.Beep.Play();
}