.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 @   skybirdzw  阅读(158)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示