Вызов метода при нажатии на кнопку winform
Разбираюсь потихоньку в C#.
Писала калькулятор winForm, появилась необходимость вынести всю логику в отдельный класс и вызывать его метод уже при нажатии на кнопку.
Код:
private void button1_Click(object sender, EventArgs e)
{
double first, second;
first = Convert.ToDouble(textBox1.Text);
second = Convert.ToDouble(textBox2.Text);
switch (comboBox1.Text)
{
case "+":
textBox3.Text = Convert.ToString(first + second);
break;
case "-":
textBox3.Text = Convert.ToString(first - second);
break;
case "*":
textBox3.Text = Convert.ToString(first * second);
break;
}
}
Подскажите, как я могу это реализовать? Мне необходимо создать отдельный класс, к примеру calculate. Адаптировать код под него к примеру:
double first, second;
string rezult;
switch (rezult)
{
case "+":
Console.WriteLine(first + second);
break;
case "-":
Console.WriteLine(first - second);
break;
case "*":
Console.WriteLine(first * second);
break;
}
Но думаю не совсем корректно во втором случае написан код, подскажите пожалуйста как будет правильнее и как я смогу вызвать метод из сторонего класса при нажатии на кнопку?
Ответы (1 шт):
Автор решения: motpfofs
→ Ссылка
Класс в который инкапсулируется парсинг значений, парсинг операци и все вычисления:
public class CalcEngine
{
public string Proceed(string action, string firstVar, string secondVar)
{
double first = Convert.ToDouble(firstVar);
double second = Convert.ToDouble(secondVar);
switch (action)
{
case "+":
return Convert.ToString(first + second);
case "-":
return Convert.ToString(first - second);
case "*":
return Convert.ToString(first * second);
}
throw new Exception("Unknown action");
}
}
Реакция на нажатие кнопки будет теперь выглядеть так:
private void button1_Click(object sender, EventArgs e)
{
var calcEngine = new CalcEngine();
textBox3.Text = calcEngine.Proceed(comboBox1.Text, textBox1.Text, textBox2.Text));
}