Saturday, January 3, 2009

Simple Delegate and Event Implementation Sample


class definition:

public class DelegateAndEvent
{
//it is a good practice to name your delegates with "EventHandler"
public delegate void ErrorEventHandler(DelegateAndEvent sender, ErrorEventArgs args);

//declare event
public event ErrorEventHandler ErrorRaised;

//a better way of returning values is to create a class which inherits the EventArgs class and add the
//desired property(ies)
public class ErrorEventArgs : EventArgs
{
private string _errmsg;
public string ErrorMessage
{
get { return _errmsg; }
set { _errmsg = value; }
}

public ErrorEventArgs() { }
public ErrorEventArgs(string error)
{
_errmsg = error;
}
}

/// Method to allow raising of error (can either be public or private)
public void RaiseError(string error)
{
if (!string.IsNullOrEmpty(error))
{
//check is event is not null (event has a subscriber)
if (ErrorRaised != null)
{
ErrorRaised(this, new ErrorEventArgs(error));
}
}

}
}


code behind:


public partial class _Default : System.Web.UI.Page
{
DelegateAndEvent dne = new DelegateAndEvent();

protected override void OnInit(EventArgs e)
{
base.OnInit(e);
dne.ErrorRaised += new DelegateAndEvent.ErrorEventHandler(dne_ErrorRaised);
}

protected void Page_Load(object sender, EventArgs e)
{
}

protected void btnEvent_Click(object sender, EventArgs e)
{
dne.RaiseError("Error was forced to be raised!");

}

void dne_ErrorRaised(DelegateAndEvent sender, DelegateAndEvent.ErrorEventArgs args)
{
lblError.Text = args.ErrorMessage;
}
}




Share/Save/Bookmark

No comments:

Post a Comment