google analytics

Wednesday, February 25, 2009

Custom Event in .NET

Hello All,

Today I will try to deliberate my experience on custom event creation in .NET , Actually I was trying to find something like hands on for event creation in .NET application, suddenly I got a quick help from one of my brother Sadique, who helped me out to resolve the thirst.

We are going to create a custom control where we will define our event class and event handler.To do that first take a  user control named InputControl.ascx  . The ascx page is as bellow.

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="InputControl.ascx.cs" Inherits="InputControl" %>
<asp:Label ID="lblLabel" runat="server" Text=""></asp:Label>
    <br />
<asp:TextBox ID="txtTextBox" runat="server"></asp:TextBox>
    <br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" 
    onclick="btnSubmit_Click" />

In that page I put a textbox control to take input , a button control to fire our custom event handler and a label to show our input result through our custom event.

The InputControl.ascx.cs code behind file is as bellow :
using System;

public partial class InputControl : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public string EventInputBox
    {
        get {
                return this.txtTextBox.Text;
            }
        set {
                this.txtTextBox.Text = value;
            }
    }

    public string EventLabel {
        get {
                 return this.lblLabel.Text;
            }
        set {
                 this.lblLabel.Text = value;
            }
    }

    public event EventHandler<CustomEventArgs> CustomEventSubmit;
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (this.CustomEventSubmit != null)
            this.CustomEventSubmit(this, new CustomEventArgs("your text is:" + EventInputBox));
    }

}

public class CustomEventArgs : EventArgs
{
    public string EventText { set; get; }

    public CustomEventArgs(string eventTextData)
    {
        EventText = eventTextData;

       
        /*
         Perform other event tasks.
         
         */
    }
}

Now I register the control in my Default.aspx page as bellow .

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register src="InputControl.ascx" tagname="InputControl" tagprefix="uc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <uc1:InputControl ID="icEventBox" runat="server" OnCustomEventSubmit="icEventBox_CustomEventSubmit"  />
    </div>
    </form>
</body>
</html>

In the file above we have to focus on OnCustomEventSubmit="icEventBox_CustomEventSubmit" which is pointing our custom event.

The code behind file Default.aspx.cs is as bellow.

using System;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void icEventBox_CustomEventSubmit(object sender, CustomEventArgs e)
    {
        icEventBox.EventLabel = e.EventText;
    }
}

In the above article I didn't go for much brief discussion , I think the code is sufficient to describe a custom event itself.

That's all for the day.
BYE

User ScrumPad for your Agile based projects.

2 comments:

  1. need more description.

    ReplyDelete
  2. This is a nice post for understanding event driven programming. But you can clarify more by giving easy example. It seems to me somewhat complex.

    Visit this to get a good article

    ReplyDelete