委托在用户控件中的使用

1.在我们写一个用户控件时需要考虑到重用得问题,如果控件中包含按钮事件,

我们不可能将点击事件写到控件里,而是我们想吧事件处理得过程写在

调用控件的页面中,这是该怎么处理呢?

我的做法时使用delegate来实现这个功能!

具体做法如下:
下面是控件的html部分
 1 ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Control Language="C#" AutoEventWireup="true" CodeFile="ctlForm.ascx.cs" Inherits="ctlForm"  %>
 2 None.gif < table >
 3 None.gif     < tr >
 4 None.gif         < td  style ="width: 100px" >
 5 None.gif            name </ td >
 6 None.gif         < td  style ="width: 100px" >
 7 None.gif             < asp:TextBox  ID ="TextBox1"  runat ="server" ></ asp:TextBox ></ td >
 8 None.gif     </ tr >
 9 None.gif     < tr >
10 None.gif         < td  style ="width: 100px" >
11 None.gif            sex </ td >
12 None.gif         < td  style ="width: 100px" >
13 None.gif             < asp:TextBox  ID ="TextBox2"  runat ="server" ></ asp:TextBox ></ td >
14 None.gif     </ tr >
15 None.gif     < tr >
16 None.gif         < td  style ="width: 100px" >
17 None.gif         </ td >
18 None.gif         < td  style ="width: 100px" >
19 None.gif             < asp:Button  ID ="Button1"  runat ="server"  OnClick ="Button1_Click"  Text ="测试"   /></ td >
20 None.gif     </ tr >
21 None.gif </ table >
22 None.gif

控件的cs部分
 1 None.gif using  System;
 2 None.gif using  System.Data;
 3 None.gif using  System.Configuration;
 4 None.gif using  System.Collections;
 5 None.gif using  System.Web;
 6 None.gif using  System.Web.Security;
 7 None.gif using  System.Web.UI;
 8 None.gif using  System.Web.UI.WebControls;
 9 None.gif using  System.Web.UI.WebControls.WebParts;
10 None.gif using  System.Web.UI.HtmlControls;
11 None.gif
12 None.gif public  partial  class  ctlForm : System.Web.UI.UserControl
13 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
14InBlock.gif    protected void Page_Load(object sender, EventArgs e)
15ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
16InBlock.gif
17ExpandedSubBlockEnd.gif    }

18InBlock.gif
19InBlock.gif    public delegate void ClickHander();
20InBlock.gif
21InBlock.gif    public ClickHander MyClickHandler = null;
22InBlock.gif
23InBlock.gif    public void Button1_Click(object sender, EventArgs e)
24ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
25InBlock.gif        if (MyClickHandler != null)
26ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
27InBlock.gif            MyClickHandler();
28ExpandedSubBlockEnd.gif        }

29ExpandedSubBlockEnd.gif    }

30ExpandedBlockEnd.gif}

31 None.gif


我们调用这个控件的页面写法如下:
 1 None.gif <% @ Page Language = " C# "  AutoEventWireup = " true "  CodeFile = " testForm.aspx.cs "  Inherits = " testForm "   %>
 2 None.gif
 3 None.gif <% @ Register Src = " ctlForm.ascx "  TagName = " ctlForm "  TagPrefix = " uc1 "   %>
 4 None.gif
 5 None.gif <! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
 6 None.gif
 7 None.gif < html xmlns = " http://www.w3.org/1999/xhtml "   >
 8 None.gif < head runat = " server " >
 9 None.gif     < title > 无标题页 </ title >
10 None.gif </ head >
11 None.gif < body >
12 None.gif     < form id = " form1 "  runat = " server " >
13 None.gif     < div >
14 None.gif         < uc1:ctlForm ID = " CtlForm1 "  runat = " server "   />
15 None.gif    
16 None.gif     </ div >
17 None.gif     </ form >
18 None.gif </ body >
19 None.gif </ html >
20 None.gif
调用控件的cs代码如下

 1 None.gif using  System;
 2 None.gif using  System.Data;
 3 None.gif using  System.Configuration;
 4 None.gif using  System.Collections;
 5 None.gif using  System.Web;
 6 None.gif using  System.Web.Security;
 7 None.gif using  System.Web.UI;
 8 None.gif using  System.Web.UI.WebControls;
 9 None.gif using  System.Web.UI.WebControls.WebParts;
10 None.gif using  System.Web.UI.HtmlControls;
11 None.gif
12 None.gif public  partial  class  testForm : System.Web.UI.Page
13 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
14InBlock.gif    protected void Page_Load(object sender, EventArgs e)
15ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
16InBlock.gif        CtlForm1.MyClickHandler = new ctlForm.ClickHander(this.Test);
17ExpandedSubBlockEnd.gif    }

18InBlock.gif
19InBlock.gif    public void Test()
20ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
21InBlock.gif        Response.Write("ok");
22ExpandedSubBlockEnd.gif    }

23InBlock.gif
24InBlock.gif    
25ExpandedBlockEnd.gif}

这样在控件点击按钮时,就会调用到页面的Test方法,从而实现了控件的重用.

转载于:https://www.cnblogs.com/yg_zhang/archive/2006/09/07/497176.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值