.NET用户控件实现委托事件代码
用户控件前台【TestDelegateUC.ascx】:
<%@ Control Language="C#"
AutoEventWireup="true" CodeBehind="TestDelegateUC.ascx.cs"
Inherits="WebApplication1.UC.TestDelegateUC" %>
<table>
<tr><td>用户名:</td><td>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox></td></tr>
<tr><td>密码:</td><td>
<asp:TextBox ID="txtPwd" runat="server"></asp:TextBox></td></tr>
<tr><td colspan="2">
<asp:Button ID="btnLogin" runat="server" Text="登 陆" OnClick="btnLogin_Click"/></td></tr>
</table>
用户控件后台【TestDelegateUC.ascx.cs】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1.UC
{
public partial class TestDelegateUC : System.Web.UI.UserControl
{
public delegate void DoLoggonDelegate(object sender,LoginEventArgs e);
public event DoLoggonDelegate DoLoggonEvent;
//public event EventHandler<LoginEventArgs> DoLoggonEvent; //方式二
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnLogin_Click(object sender, EventArgs e)
{
string username = txtName.Text;
string userpwd = txtPwd.Text;
LoginEventArgs args = new LoginEventArgs(username, userpwd);
if (DoLoggonEvent != null)
{
DoLoggonEvent(this, args);
}
}
}
public class LoginEventArgs:EventArgs
{
private string username { get; set; }
private string userpwd { get; set; }
public LoginEventArgs(string name, string pwd)
{
this.username = name;
this.userpwd = pwd;
}
}
}
调用页面后台代码【TestDelegate1.aspx.cs】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class TestDelegate1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TestDelegateUC1.DoLoggonEvent += new UC.TestDelegateUC.DoLoggonDelegate(ValidLoggon);
//TestDelegateUC1.DoLoggonEvent += new EventHandler<UC.LoginEventArgs>(ValidLoggon); //方式二
}
public void ValidLoggon(object sender, UC.LoginEventArgs args)
{
//执行逻辑...
Response.Write("登陆成功!");
}
}
}