.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("登陆成功!");
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端