向用户控件添加事件

基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇 如何高效学习Java? 毕业设计项目应该怎么做?入门实战项目应该怎么做? 做Java开发都应该学习哪些框架技术? 我想来跟你聊聊为什么要学习此专栏?我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,当你迷茫想努力没有方向时,最事半功倍的方法是:找人带你! 因为过来人,更懂得如何学、如何做、如何少走弯路! 那今天就给大家带来一门专栏课程,由 天罡gg 和 经海路大白狗 两位实力大牛合力打造的一款专栏,可以让你从0到1快速拥有企业级规范的项目实战经验! 阅读详情

 

      既然用户控件可以有自己的属性,那也一样可以有自己的事件。给自己的控件添加一个事件有的时候往往可以解决大难题,比如说我们要做一个登陆控件,就可以给它添加一个自己的提交事件,这样当提交的时候可以方便的取得回传值。如果没有自己的事件,该怎么判断登陆控件的按钮点击事件呢?
      添加事件是一个麻烦的过程,首先得有对“事件和委托”的认识,对这方面不熟悉的朋友可以找有关方面的资料看一下,我在这里恐怕讲不清楚,因为我也是想了好几天才明白过来。下面我们来看怎么给登陆控件添加一个login事件。
我们可以在ascx文件中定义一个事件,然后在aspx文件中订阅这个事件。当按钮被单击提交资料时,产生事件,发布通知,这样aspx文件就可以收到信息并且进入处理这个事件的方法中。

---本文所用登陆控件下载------
http://api.html.533.net/se/uc_event.rar

uc_event是用户控件中的类,uc_eventx是aspx页中的类。

先来看.ascx.cs中事件的定义和发布:
 
代码:
public class uc_event : System.Web.UI.UserControl
{
   //定义该事件使用的委托
   public delegate void loginhandler(object sender,loginEventArgs e);
   //定义事件
   public event loginhandler login;
   //这个是当用户控件中的按钮被单击时引发的事件,在这里触发我们定义的登陆事件
   private void butlogin_Click(object sender, System.EventArgs e)
   {
   //判断是否被订阅
      if(login!=null)
      {
        loginEventArgs el=new loginEventArgs();
        //事件发生
        login(this,el);
      }
   }
}
在这里,事件的触发是通过按钮单击事件实现的。这块代码位于.ascx.cs的用户控件类中。

loginEventArgs的定义:
代码:
//EventArgs派生类,放置事件信息
public class loginEventArgs : System.EventArgs
{
   //定义一个事件信息
   public string starttime
   {
     get
     {
       return System.DateTime.Now.ToString();
     }
   }
}
最后就是.aspx.cs中的对事件的订阅。一般来说,事件的订阅都是放在InitializeComponent()方法中,因此我们也把对login事件的订阅放到这里面:
代码:
public class uc_eventx : System.Web.UI.Page
{    //声明控件
   protected prac.uc_event uclogin=new uc_event();
   private void InitializeComponent()
   {
      this.Load += new System.EventHandler(this.Page_Load);
      //通过事件的代理,来订阅用户控件的事件
      this.uclogin.login+=new prac.uc_event.loginhandler(uclogin_login);
   }
      //响应事件
   private void uclogin_login(object sender, loginEventArgs e)
   {
      Response.Write("hello usercontrol's event"+"<br>"+e.starttime);
   }
}
这样就完成啦。
现在来看一下整个过程。
C#中的事件机制为:对象可以发布一组事件供其他类订阅。当发布类产生事件时,所有订阅类都会得到通知。
先往前一点,说说事件和委托的工作机制。一个事件发生,都应该有触发条件,在这里为按钮的单击。(要注意的是,按钮的单击也是一个事件,我们实际上是在处理按钮单击事件的方法中印发login事件的)当事件发生且有订阅者的时候,就会向订阅者发送一个类似于“事件发生啦”的消息。订阅者得到通知后,便启动事件处理方法来进行进一步的操作。而事件处理方法也不是随便乱写的,它必须符合事件委托(delegate)中定义的方法签名。在c#中,一般的事件处理方法签名为:返回类型为void,有两个参数,参数1是提供事件的来源(即发生者),类型为object;参数2是提供事件的信息,类型为EventArgs的派生类。
我们把这个用户控件插入到aspx页中后,实际上就是在uc_eventx类中创建了一个uc_event类的实例,而一个aspx页则是一个uc_eventx类的实例。现在我们是在uc_event类中发布一个事件,然后在uc_eventx类中订阅这个事件。当用户单击用户控件所属的按钮时,引发了uc_event类中的login事件,因为uc_eventx类订阅了这个事件,所以uc_event类把事件发生的消息发送给uc_evenx类。uc_eventx类得到了事件发生的通知,便使用指定的事件处理方法来处理这个事件。

大体就是这样,有了这个事件,我们就可以方便的取回登陆控件中的值,并且进行其他操作。
YOLOv8【第十章:多任务扩展深度篇·第16节】车道线检测——基于 YOLOv8-Seg 的车道线分割与拟合! 🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。 阅读详情

相关推荐

AUTO-DL平台快速部署BEVFormer:Nuscenes数据集完整训练避坑指南

本文详细介绍了在AUTO-DL平台高效部署BEVFormer模型并利用Nuscenes数据集进行完整训练的实战指南。重点解析了平台数据管理、环境配置、数据集迁移解压、预处理及训练启动等全流程中的关键步骤与常见避坑技巧,帮助研究者和工程师快速复现这一前沿视觉感知模型,节省云端训练时间与成本。

weixin_29188043的博客 331

2004-6-28+ 用户控件(添加事件)

既然用户控件可以有自己的属性,那也一样可以有自己的事件。给自己的控件添加一个事件有的时候往往可以解决大难题,比如说我们要做一个登陆控件,就可以给它添加一个自己的提交事件,这样当提交的时候可以方便的取得回传值。如果没有自己的事件,该怎么判断登陆控件的按钮点击事件呢?添加事件是一个麻烦的过程,首先得有对“事件和委托”的认识,对这方面不熟悉的朋友可以找有关方面的资料看一下,我在这里恐怕讲不清楚,因为我也...

weixin_34390105的博客 152

安装了anaconda,pycharm导入numpy时提示没有该包(模块)?

**问题详情:**我安装了anaconda,在利用Pycharm学习numpy这个库的时候,导入numpy这个包的时候提示我没有nummpy这个模块:No module named numpy.如下图所示。 应该说安装了Anaconda,里边就自带了numpy这个库,就应该能够使用。我一个新手怎么搞得懂呢?于是网上查了查找到了一个解决办法,说是我项目的解释器应该设置为Anaconda安装目录下的python.exe,而不应该是系统自带的:https://blog.youkuaiyun.com/aanndd77/art

qq_39820505的博客 1万+

ZIGBEE协议栈中添加自己的事件和任务

一、添加事件: 1、添加事件与添加任务不同,他是隶属于某个任务,只是这个任务中的一个事件,即事件掩码中多一位,事件处理函数中多个分支(if分支或者case分支)。 二、添加任务: 1.所有的任务都是在当前工程的osalInitTasks()函数中添加的,刚开始taskID=0,以后每添加一个任务都以“SampleApp_Init( taskID++ )...

weixin_34293902的博客 751

XGBoost与Embedding混合建模实战解析

在机器学习领域,特征工程与模型融合是提升预测性能的关键技术。Embedding技术通过将高维稀疏特征(如文本、ID类数据)转化为低维稠密向量,有效捕获语义关联;而XGBoost作为强大的集成学习算法,擅长处理结构化特征并进行自动特征组合。两者结合的混合架构(如Semantic Boosted Trees)在金融风控和推荐系统等场景中展现出显著优势,尤其在处理用户行为序列、商品ID等复杂特征时,相比传统方法能获得更好的模型效果。本文通过电商推荐和金融反欺诈等案例,详解如何实现Embedding+XGBoost

weixin_28718641的博客 325

用户控件添加自定义事件

用户控件添加自定义事件给用户控件添加自定义事件需要一下几个步骤:1.定义委托2.声明事件3.定义事件触发函数4.注册事件 定义委托:public delegate void LogInOutClickHandler(objectsender,LogInOutEventArgs e);其中LogInOutEventArgs类是从EventArgs类继承(把这个

tuolingss的专栏 1187

win10安装openvpn客户端

进入C:\Program Files\TAP-Windows\bin目录,然后右键用管理员权限执行addtap.bat文件,此文件执行会创建一个网卡。链接:https://pan.baidu.com/s/1KAifTiP7qp1i5ZkfdnfwkA。4.2 进入安装目录的config下新建一个文件夹,将证书文件全部挪进去(不移动.ovpn文件)3.4 将拿到的ssl认证文件放入安装目录的config目录下。然后修改ovpn文件 “./”代表当前路径,第二个链接重复。3.1 一直下一步到这里打上勾。

qq_36200932的博客 3万+

Js事件详解(1)事件类型及几种添加事件处理程序的方法

js中的事件早期的事件流的两种解决方案:1.IE:事件冒泡流 即事件开始时由最具体的元素(DOM中层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)–自下向上。所有现代的浏览器都支持事件冒泡。2.Netscape Communicator:事件捕获流。 与IE团队提出的事件冒泡流刚好相反。由不太具体的节点到具体的节点传播。这么做的目的:在事件到达预定的目标之前捕

KingW 2374

R数据分析:潜在转化分析LTA的做法和解释(一)

之前给大家写了很多潜在类别分析的教程Mplus教程:如何做潜在类别分析LCAR数据分析:用R语言做潜类别分析LCAMplus数据分析:潜在类别分析(LCA)流程(详细版)R数据分析:再写潜在类别分析LCA的做法与解释,今天继续给大家拓展一步。 今天要介绍的就是潜在转换分析,这个东西就是LCA的纵向版本。是一个专门用来研究质变的统计技巧。有一句话叫做量变起质变,你怎么知道质变到底发生没有?就用潜在转换分析。 Latent transition analysis is an extension of...

Codewar的博客 7703

VisionPro - 基础 - 模板匹配技术-Search/PMAlign/PatMax(6)-纹理屏蔽和重叠匹配

Note:对已经有了,1已经训练好的模板,2一组使能的自由度,3一个待测的实时图片,PatMax 就能模板匹配的给出变化的最佳描述。对一些综合的模板,这三个输入值往往是一起影响最后的变换结果信息。例如,如果我们训练了一个圆形的模板,然后搜索一个角度自由度包括一个圆,那么将会有无限个可能的角度满足要求。这些组合的模板匹配,被官方名为:退化系统,a degenerate system的结果被叫做a degenerate result 退化结果4.2 退化系统例子。

山云的专栏 1534

添加事件的几种方法

1、第一种 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { my_click(v); } }); } public ...

Zywcd 526

智联招聘Python岗位数据采集:基于API请求的校园招聘信息爬取实战

本项目开发了一个智联招聘Python岗位校园招聘数据采集系统,采用requests库直接调用API接口获取结构化数据。系统通过分析API接口结构,配置完整的请求头、Cookie和身份验证参数,实现了10页数据的批量采集。采集内容包括工作名称、薪资范围、企业信息等10个关键字段,并存储为Excel格式。项目严格遵守网络爬虫规范,合理控制请求频率,数据仅用于技术学习和就业分析。技术实现涉及API逆向工程、JSON数据处理、防御性编程等核心技能,为学生职业规划和教育机构教学改革提供数据支持。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 626

[ASP.NET开发系列]在用户控件中添加事件

在《在用户控件中添加属性》这一篇文章中我们演示了如何在用户控件中添加属性,接下来我们演示如何在用户控件中添加事件。在《在用户控件中添加属性》这一篇文章中我们定义了一个用户登录的用户控件UserLogin.ascx 文件,里面包含了一个LinkButton服务器按钮控件,当用户单击该按钮时服务器端会自动生成一个回发来激发Page.Load事件。除了服务器自动产生回发来激发Page.Load事件外,我

嗨!您好!Welcome my blog 887

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# 中用户控件中添加事件和使用

事件 用户控件 c#中用户控件 用户控件添加事件 自定义事件的使用 此处以TreeView用户控件为例:基本思路:1. 在SunSoftTree类中声明事件,如SelectedNodeChanged; 2. 在SunSoftTree类中定义引发事件的方法,如Sun_SelectedNodeChanged()方法; 3 在SunSoftTree类的相关方法中调用引发事件的方法,如在OnSelecte

LuTH 3628

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

在用户控件中动态添加控件及事件

问题来自网上:   动态添加控件,应该加在OnInit(EventArgs e)事件里。  protected override void OnInit(EventArgs e)    {       //加在这个事件内    }   下面Insus.NET就以动态添加一个TextBox在用户控件内,在控件值发生变化时,触发事件,并提示变化后的值。 &lt;%@ Contr...

weixin_33895475的博客 135

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ASP.NET用户控件说明和添加事件

ASP.NET用户控件说明和添加事件<br />文章分类:.net编程在WEB开发中经常有一些代码是在很多地方重复出现的,象导航栏、用户登录/注册和首页上面的一些固定栏目等。这些可重用的代码我们可以把它写成一个通用模块供需要的地方来引用,这样做即节省了开发时间还方便以后的维护。 <br />在ASP.NET的web编程中提供了一种叫做“用户控件”可以帮助我们完成这种做法,其文件扩展名是“.ascx”,由于ascx文件是用来插入ASPX页面中使用的,而一个ASPX窗体只能包含一个<form>标志,所以ascx

Sunny Zero 582

在asp.net中为Web用户控件添加属性和事件

在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程。它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功。...

aome1470的博客 163

用户控件里添加事件 画面调用

给用户控件里添加事件,画面使用  public delegate void GridRowColChanged(object sender, EventArgs e);         public event GridRowColChanged gridRowColChanged = delegate { };         protected virtual void OnGridRow

u010124796的专栏 576

用户控件说明和添加事件

在WEB开发中经常有一些代码是在很多地方重复出现的,象导航栏、用户登录/注册和首页上面的一些固定栏目等。这些可重用的代码我们可以把它写成一个通用模块供需要的地方来引用,这样做即节省了开发时间还方便以后的维护。 在ASP.NET的web编程中提供了一种叫做“用户控件”可以帮助我们完成这种做法,其文件扩展名是“.ascx”,由于ascx文件是用来插入ASPX页面中使用的,而一个ASPX窗体只能包含一

泪光无悔 647

为asp.net中的Web用户控件添加属性和事件

在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程。它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的。随着技术发展,Microsoft提出了第二代编程模型――Web窗体。

5138

用户控件及事件添加

在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程。它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩Asp的高手,经历这么多年而不衰,可见他的成功。      

张朝玉的专栏 1093

ASP.NET开发:在用户控件中添加事件

 在《ASP.NET开发:在用户控件中添加属性》这一篇文章中我们定义了一个用户登录的用户控件UserLogin.ascx 文件,里面包含了一个LinkButton服务器按钮控件,当用户单击该按钮时服务器端会自动生成一个回发来激发Page.Load事件。除了服务器自动产生回发来激发Page.Load事件外,我们可以给LinkButton添加一个它自己的事件,添加事件其实也很简单,通过在块中声明事件,

lihaiyin的专栏 596

用户控件UserControl添加Load加载事件

1.在用户控件代码页面中添加Load加载方法(事件),如下图所示: 代码: //用户控件自定义加载事件private void ColorGrupMapManagerUC_Load(object sender, EventArgs e) { LoadCatalogMainItems(); this.toolStrip1.Enabled = ColorThem...

weixin_30752377的博客 1059
上一篇: C#中indexof和substring函数用法
下一篇: 浅析C#的事件处理和自定义事件
灿烂阳光168
博客等级 码龄23年 29粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值