You are on page 1of 3

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CalApplication
{
public partial class Form1 : Form
{

CalcuClass calcu = new CalcuClass();


public double num1, num2;
public Form1()
{
InitializeComponent();
CalcuClass cal = new CalcuClass();
button1.Click += new EventHandler(buttonequal_Click);
}
private void buttonequal_Click(object sender, EventArgs e)
{
num1 = Convert.ToDouble(textBox1.Text);
num2 = Convert.ToDouble(textBox2.Text);

string selectedOperator = comboBox1.SelectedItem.ToString();


double result = 0;
switch (selectedOperator)
{
case "+":
calcu.CalcuEvent += calcu_GetSum;
result = calcu.GetSum(num1, num2);
calcu.CalcuEvent -= calcu_GetSum;
break;

case "-":
calcu.CalcuEvent += calcu_GetDifference;
result = calcu.GetDifference(num1, num2);
calcu.CalcuEvent -= calcu_GetDifference;
break;
case "*":
calcu.CalcuEvent += calcu_GetProduct;
result = calcu.GetProduct(num1, num2);
calcu.CalcuEvent -= calcu_GetProduct;
break;
case "/":
calcu.CalcuEvent += calcu_GetQuotient;
result = calcu.GetQuotient(num1, num2);
calcu.CalcuEvent -= calcu_GetQuotient;
break;
default:
// Handle invalid operator
label3.Text = "Invalid operator";
return;
}
label3.Text = result.ToString();
}
private double calcu_GetSum(double arg)
{
return arg;
}

private double calcu_GetDifference(double arg)


{
return arg;
}

private double calcu_GetProduct(double arg)


{
return arg;
}

private double calcu_GetQuotient(double arg)


{
return arg;
}
private void Form1_Load(object sender, EventArgs e)
{

}
}
}

public delegate T Formula<T>(T arg1);


class CalcuClass
{
public Formula<double> info;

public double GetSum(double num1, double num2)


{
return num1 + num2;
}

public double GetDifference(double num1, double num2)


{
return num1 - num2;
}

public double GetProduct(double num1, double num2)


{
return num1 * num2;
}

public double GetQuotient(double num1, double num2)


{
return num1 / num2;
}

public event Formula<double> CalcuEvent


{
add
{
Console.WriteLine("Added the deligate");
info += value;
}
remove
{
Console.WriteLine("Removed the deligate");
info -= value;

}
}
}

You might also like