In this example we create  Dropdown List control and delegate its event

http://manas6/aspnet.35/mm.Delegate6/Default.aspx

Keywords:

  • System.EventHandler
  • delegate event
  • PlaceHolder1.Controls.Add(b);
  • OR, form1.Controls.Add(ddl);

Step: 1 Create a new web-site, add a place holder

Step: 2 Codes

Default.aspx

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

<!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>mm.Delegate6 : Create control and Tag Events</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="PlaceHolder1"
runat="server"></asp:PlaceHolder><br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
 

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Collections; // for array List
public delegate void ButtonClick(object sender, EventArgs e);
public delegate void Button1_Click(object sender, EventArgs e);
public delegate void DropDownList1_SelectedIndexChanged(object sender, EventArgs e);

public partial class _Default : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.DropDownList ddl = new DropDownList();
protected System.Web.UI.WebControls.Button Button2 ;//= new Button();
protected System.Web.UI.WebControls.Literal Literal1 = new Literal();
protected void Page_Load(object sender, EventArgs e)
{
ArrayList al = new ArrayList();
al.Add("color='white'");
al.Add("color='red'");
al.Add("color='Navy'");
al.Add("color='Green'");
al.Add("color='Maroon'");
//
Button b = new Button();
b.Width = 100;
b.Text = "Click";
b.BackColor = Color.WhiteSmoke;
b.Visible = true;
PlaceHolder1.Controls.Add(b);
b.Click += new System.EventHandler(ButtonClick);
//you can use form1.Controls.Add(ddl);
Button Button1 = new Button();
Button1.Text = "Button 1";
PlaceHolder1.Controls.Add(Button1);
Button1.Click += new System.EventHandler(Button1_Click);

Label1.Text = "<br/>";
Literal1.Text ="<br/>used as Separator <hr/>";
PlaceHolder1.Controls.Add(Literal1);
ddl.ID = "DD1";
ddl.AutoPostBack = true;
ddl.Width = 150;
ddl.DataSource = al;
//ddl.DataTextField = "key";
ddl.DataBind();
PlaceHolder1.Controls.Add(ddl);
ddl.SelectedIndexChanged += new System.EventHandler(DropDownList1_SelectedIndexChanged);

}
protected void ButtonClick(Object sender, EventArgs e)
{
Label1.Text = "";
Label1.Text += "<br/><font color='red'> You Clciked a </font> " + sender.GetType().Name.ToString();
}
protected void Button1_Click(Object sender, EventArgs e)
{
Label1.Text = "";

Label1.Text += "<br/>You Clciked Button_1 :" + sender.ToString();
Label1.Text += "<br/>You Clciked Button_1 :" + sender.GetType().FullName.ToString();
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text = "";
string str = ddl.SelectedItem.Text;
Label1.Text ="<br/><font " + str + "> Color Chnaged To : "+ ddl.SelectedItem.Text + "</font>";

}
}
 

Default2.aspx

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

<!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>This page uses a public Delegate declared in Default.aspx.
<asp:PlaceHolder ID="PlaceHolder1"
runat="server"></asp:PlaceHolder><br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
 

Default2.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
// delegation used in Default.aspx.cs
//public delegate void DropDownList1_SelectedIndexChanged(object sender, EventArgs e);
public partial class Default2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DropDownList ddl = new DropDownList();

protected void Page_Load(object sender, EventArgs e)
{


}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text = "";
string str = ddl.SelectedItem.Text;
Label1.Text = "<br/><font " + str + "> Color Chnaged To : " + ddl.SelectedItem.Text + "</font>";

}
protected void Page_Init(object sender, EventArgs e)
{
ArrayList al = new ArrayList();
al.Add("color='white'");
al.Add("color='red'");
al.Add("color='Navy'");
al.Add("color='Green'");
al.Add("color='Maroon'");
//
ddl.ID = "DD1";
ddl.AutoPostBack = true;
ddl.Width = 150;
ddl.DataSource = al;
//ddl.DataTextField = "key";
ddl.DataBind();
form1.Controls.Add(ddl);
ddl.SelectedIndexChanged += new System.EventHandler(DropDownList1_SelectedIndexChanged);
}
}
 

Step:  3 : Runtime Analysis of Default.aspx

Using a drop down Choose Navy

Click a button

Step: 4 Extended Runtime analysis: Default2.aspx, showing global use of Delegation: please click on the Link

Loads Second page

 

Step: