Jul 29, 2010 07:42 PM
Hello, I made a little events/delegates example. I did it because I was bored and I decided to make it :P. I'm sharing it with you because events and delegates can be hard when your learn them and this example could help you.
I know, there's better way to divide, but I needed a subject for the example. So I took the division.
C#
Spoiler (Click to View)
Divison class (Division.cs)
And you can use it like that :
Visual Basic .NET
Spoiler (Click to View)
Division class (Division.cs)
And you can use it like that :
Enjoy! If you have any questions, ask them here!
I know, there's better way to divide, but I needed a subject for the example. So I took the division.
C#
Spoiler (Click to View)
Divison class (Division.cs)
Code
class Division
{
public delegate void EventHandler(Object sender, DivisionEventArgs e); //Delegate
public event EventHandler DivisionDone; //This event will be executed when the divison will be done.
public event EventHandler DivisionPerZero; //This event will be executed when the divisor is 0.
public Division() //Constructor
{
}
public void Divide(int dividend, int divisor)
{
if (divisor == 0)
{
if (DivisionPerZero != null)
{
DivisionPerZero(this, new DivisionEventArgs(dividend, divisor, 0.0)); //Execute the DivisionPerZero event
return;
}
}
double num = dividend/divisor;
if(DivisionDone != null)
{
DivisionDone(this, new DivisionEventArgs(dividend, divisor, num)); //Execute the DivisionDone event
}
}
}
class DivisionEventArgs : EventArgs //The arguments of the division.
{
public DivisionEventArgs(int a, int b, double r)
{
dividend = a;
divisor = b;
result = r;
}
private int dividend;
private int divisor;
private double result;
public int Dividend
{
get { return dividend; }
}
public int Divisor
{
get { return divisor; }
}
public double Result
{
get { return result; }
}
}And you can use it like that :
Code
private void TESTING_METHOD()
{
Division division = new Division();
division.DivisionDone += new Division.EventHandler(div_DivisionDone);
division.DivisionPerZero += new Division.EventHandler(div_DivisionPerZero);
division.Divide(10, 5);
}
private void div_DivisionPerZero(object sender, DivisionEventArgs e)
{
MessageBox.Show("Error! Division per zero!");
}
private void div_DivisionDone(object sender, DivisionEventArgs e)
{
MessageBox.Show("Result : " + e.Result.ToString());
}Visual Basic .NET
Spoiler (Click to View)
Division class (Division.cs)
Code
Class Division
Public Delegate Sub EventHandler(sender As [Object], e As DivisionEventArgs)
'Delegate
Public Event DivisionDone As EventHandler
'This event will be executed when the divison will be done.
Public Event DivisionPerZero As EventHandler
'This event will be executed when the divisor is 0.
Public Sub New()
'Constructor
End Sub
Public Sub Divide(dividend As Integer, divisor As Integer)
If divisor = 0 Then
If DivisionPerZero IsNot Nothing Then
RaiseEvent DivisionPerZero(Me, New DivisionEventArgs(dividend, divisor, 0.0))
'Execute the DivisionPerZero event
Return
End If
End If
Dim num As Double = dividend \ divisor
RaiseEvent DivisionDone(Me, New DivisionEventArgs(dividend, divisor, num))
'Execute the DivisionDone event
End Sub
End Class
Class DivisionEventArgs
Inherits EventArgs
'The arguments of the division.
Public Sub New(a As Integer, b As Integer, r As Double)
m_dividend = a
m_divisor = b
m_result = r
End Sub
Private m_dividend As Integer
Private m_divisor As Integer
Private m_result As Double
Public ReadOnly Property Dividend() As Integer
Get
Return m_dividend
End Get
End Property
Public ReadOnly Property Divisor() As Integer
Get
Return m_divisor
End Get
End Property
Public ReadOnly Property Result() As Double
Get
Return m_result
End Get
End Property
End ClassAnd you can use it like that :
Code
Private Sub TESTING_METHOD()
Dim division As New Division()
division.DivisionDone += New Division.EventHandler(AddressOf div_DivisionDone)
division.DivisionPerZero += New Division.EventHandler(AddressOf div_DivisionPerZero)
division.Divide(10, 5)
End Sub
Private Sub div_DivisionPerZero(sender As Object, e As DivisionEventArgs)
MessageBox.Show("Error! Division per zero!")
End Sub
Private Sub div_DivisionDone(sender As Object, e As DivisionEventArgs)
MessageBox.Show("Result : " + e.Result.ToString())
End SubEnjoy! If you have any questions, ask them here!
