用户控件事件使用delegate
1.在我们写一个用户控件时需要考虑到重用得问题,如果控件中包含按钮事件,
我们不可能将点击事件写到控件里,而是我们想吧事件处理得过程写在
调用控件的页面中,这是该怎么处理呢?
我的做法时使用delegate来实现这个功能!
具体做法如下:
下面是控件的html部分
控件的cs部分
我们调用这个控件的页面写法如下:
我们不可能将点击事件写到控件里,而是我们想吧事件处理得过程写在
调用控件的页面中,这是该怎么处理呢?
我的做法时使用delegate来实现这个功能!
具体做法如下:
下面是控件的html部分
 1 <%@ Control Language="C#" AutoEventWireup="true" CodeFile="ctlForm.ascx.cs" Inherits="ctlForm" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ctlForm.ascx.cs" Inherits="ctlForm" %>
2 <table>
<table>
3 <tr>
    <tr>
4 <td style="width: 100px">
        <td style="width: 100px">
5 name</td>
            name</td>
6 <td style="width: 100px">
        <td style="width: 100px">
7 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
8 </tr>
    </tr>
9 <tr>
    <tr>
10 <td style="width: 100px">
        <td style="width: 100px">
11 sex</td>
            sex</td>
12 <td style="width: 100px">
        <td style="width: 100px">
13 <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>
14 </tr>
    </tr>
15 <tr>
    <tr>
16 <td style="width: 100px">
        <td style="width: 100px">
17 </td>
        </td>
18 <td style="width: 100px">
        <td style="width: 100px">
19 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="测试" /></td>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="测试" /></td>
20 </tr>
    </tr>
21 </table>
</table>
22
 <%@ Control Language="C#" AutoEventWireup="true" CodeFile="ctlForm.ascx.cs" Inherits="ctlForm" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ctlForm.ascx.cs" Inherits="ctlForm" %>2
 <table>
<table>3
 <tr>
    <tr>4
 <td style="width: 100px">
        <td style="width: 100px">5
 name</td>
            name</td>6
 <td style="width: 100px">
        <td style="width: 100px">7
 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>8
 </tr>
    </tr>9
 <tr>
    <tr>10
 <td style="width: 100px">
        <td style="width: 100px">11
 sex</td>
            sex</td>12
 <td style="width: 100px">
        <td style="width: 100px">13
 <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>14
 </tr>
    </tr>15
 <tr>
    <tr>16
 <td style="width: 100px">
        <td style="width: 100px">17
 </td>
        </td>18
 <td style="width: 100px">
        <td style="width: 100px">19
 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="测试" /></td>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="测试" /></td>20
 </tr>
    </tr>21
 </table>
</table>22

控件的cs部分
 1 using System;
using System;
2 using System.Data;
using System.Data;
3 using System.Configuration;
using System.Configuration;
4 using System.Collections;
using System.Collections;
5 using System.Web;
using System.Web;
6 using System.Web.Security;
using System.Web.Security;
7 using System.Web.UI;
using System.Web.UI;
8 using System.Web.UI.WebControls;
using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
using System.Web.UI.HtmlControls;
11
12 public partial class ctlForm : System.Web.UI.UserControl
public partial class ctlForm : System.Web.UI.UserControl
13 {
{
14 protected void Page_Load(object sender, EventArgs e)
    protected void Page_Load(object sender, EventArgs e)
15 {
    {
16
17 }
    }
18
19 public delegate void ClickHander();
    public delegate void ClickHander();
20
21 public ClickHander MyClickHandler = null;
    public ClickHander MyClickHandler = null;
22
23 public void Button1_Click(object sender, EventArgs e)
    public void Button1_Click(object sender, EventArgs e)
24 {
    {
25 if (MyClickHandler != null)
        if (MyClickHandler != null)
26 {
        {
27 MyClickHandler();
            MyClickHandler();
28 }
        }
29 }
    }
30 }
}
31
 using System;
using System;2
 using System.Data;
using System.Data;3
 using System.Configuration;
using System.Configuration;4
 using System.Collections;
using System.Collections;5
 using System.Web;
using System.Web;6
 using System.Web.Security;
using System.Web.Security;7
 using System.Web.UI;
using System.Web.UI;8
 using System.Web.UI.WebControls;
using System.Web.UI.WebControls;9
 using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls.WebParts;10
 using System.Web.UI.HtmlControls;
using System.Web.UI.HtmlControls;11

12
 public partial class ctlForm : System.Web.UI.UserControl
public partial class ctlForm : System.Web.UI.UserControl13
 {
{14
 protected void Page_Load(object sender, EventArgs e)
    protected void Page_Load(object sender, EventArgs e)15
 {
    {16

17
 }
    }18

19
 public delegate void ClickHander();
    public delegate void ClickHander();20

21
 public ClickHander MyClickHandler = null;
    public ClickHander MyClickHandler = null;22

23
 public void Button1_Click(object sender, EventArgs e)
    public void Button1_Click(object sender, EventArgs e)24
 {
    {25
 if (MyClickHandler != null)
        if (MyClickHandler != null)26
 {
        {27
 MyClickHandler();
            MyClickHandler();28
 }
        }29
 }
    }30
 }
}31

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

3
 <%@ Register Src="ctlForm.ascx" TagName="ctlForm" TagPrefix="uc1" %>
<%@ Register Src="ctlForm.ascx" TagName="ctlForm" TagPrefix="uc1" %>4

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

7
 <html xmlns="http://www.w3.org/1999/xhtml" >
<html xmlns="http://www.w3.org/1999/xhtml" >8
 <head runat="server">
<head runat="server">9
 <title>无标题页</title>
    <title>无标题页</title>10
 </head>
</head>11
 <body>
<body>12
 <form id="form1" runat="server">
    <form id="form1" runat="server">13
 <div>
    <div>14
 <uc1:ctlForm ID="CtlForm1" runat="server" />
        <uc1:ctlForm ID="CtlForm1" runat="server" />15
 
    16
 </div>
    </div>17
 </form>
    </form>18
 </body>
</body>19
 </html>
</html>20

 1 using System;
using System;
2 using System.Data;
using System.Data;
3 using System.Configuration;
using System.Configuration;
4 using System.Collections;
using System.Collections;
5 using System.Web;
using System.Web;
6 using System.Web.Security;
using System.Web.Security;
7 using System.Web.UI;
using System.Web.UI;
8 using System.Web.UI.WebControls;
using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
using System.Web.UI.HtmlControls;
11
12 public partial class testForm : System.Web.UI.Page
public partial class testForm : System.Web.UI.Page
13 {
{
14 protected void Page_Load(object sender, EventArgs e)
    protected void Page_Load(object sender, EventArgs e)
15 {
    {
16 CtlForm1.MyClickHandler = new ctlForm.ClickHander(this.Test);
        CtlForm1.MyClickHandler = new ctlForm.ClickHander(this.Test);
17 }
    }
18
19 public void Test()
    public void Test()
20 {
    {
21 Response.Write("ok");
        Response.Write("ok");
22 }
    }
23
24 
    
25 }
}
   
 using System;
using System;2
 using System.Data;
using System.Data;3
 using System.Configuration;
using System.Configuration;4
 using System.Collections;
using System.Collections;5
 using System.Web;
using System.Web;6
 using System.Web.Security;
using System.Web.Security;7
 using System.Web.UI;
using System.Web.UI;8
 using System.Web.UI.WebControls;
using System.Web.UI.WebControls;9
 using System.Web.UI.WebControls.WebParts;
using System.Web.UI.WebControls.WebParts;10
 using System.Web.UI.HtmlControls;
using System.Web.UI.HtmlControls;11

12
 public partial class testForm : System.Web.UI.Page
public partial class testForm : System.Web.UI.Page13
 {
{14
 protected void Page_Load(object sender, EventArgs e)
    protected void Page_Load(object sender, EventArgs e)15
 {
    {16
 CtlForm1.MyClickHandler = new ctlForm.ClickHander(this.Test);
        CtlForm1.MyClickHandler = new ctlForm.ClickHander(this.Test);17
 }
    }18

19
 public void Test()
    public void Test()20
 {
    {21
 Response.Write("ok");
        Response.Write("ok");22
 }
    }23

24
 
    25
 }
} 
                    
                     
                    
                 
                    
                
 


 
     
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号