.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("登陆成功!");  
        }
    }
}

posted @ 2018-10-08 16:11  skybirdzw  阅读(156)  评论(0编辑  收藏  举报