为了账号安全,请及时绑定邮箱和手机立即绑定

事件委托的,与他们的触发关系,请求大家指导,在此谢过大家了

事件委托的,与他们的触发关系,请求大家指导,在此谢过大家了

慕标5832272 2018-12-06 22:38:27
public event EventHandler ClickEventHandler;    protected void Button1_Click(object sender, EventArgs e)     {         if (ClickEventHandler != null)         {             ClickEventHandler(this, EventArgs.Empty);         }     }问题1:请问这个事件ClickEventHandler什么都没绑定,我想说的是:委托事件里连一个方法都没有声明和绑定,但我们点击触发 Button1_Click时,此段代码【         if (ClickEventHandler != null)         {             ClickEventHandler(this, EventArgs.Empty);         }】如何运行啊,事件是点击了botton1按钮,什么反应也没有,在上下文中,究竟起了什么作用,这神来之笔,对于上下文究竟起什么作用,?????不会做做样子,可要可无的吗,需要的这段代码吗? 问题2: ClickEventHandler(this, EventArgs.Empty);怎么还有传入空参数EventArgs.Empty啊,那不写,就是传入空参数,还是说EventArgs.Empty传入的参数是有值的(下面还有个问题3,麻烦了) 注意:地处的代码是创建(用户控件)的关于委托事件的代码完整的代码如下  MyControl.ascx的代码<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyControl.ascx.cs" Inherits="MyControl" %><asp:TextBox ID="TextBox1" runat="server" Width="193px">请输入搜索内容</asp:TextBox><asp:Button ID="Button1" runat="server" Text="搜索" onclick="Button1_Click" />MyControl.ascx.cs后置代码using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;public partial class MyControl : System.Web.UI.UserControl{     protected void Page_Load(object sender, EventArgs e)     {     }     public string FindText     {         get { return TextBox1.Text; }         set { TextBox1.Text = value; }     }     public event EventHandler ClickEventHandler;    protected void Button1_Click(object sender, EventArgs e)     {         if (ClickEventHandler != null)         {             ClickEventHandler(this, EventArgs.Empty);         }     }} 我用来测试UserMyControl.aspx的页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="UseLMyControl.aspx.cs" Inherits="UseLMyControl" %> <%@ Register src="MyControl.ascx" tagname="MyControl" tagprefix="uc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">     <title>无标题页</title> </head> <body>     <form id="form1" runat="server">     <div>     <uc1:MyControl ID="MyControl1" runat="server" OnClickEventHandler="MyControl1_Click"/>       <br />         <asp:Label ID="Label1" runat="server" Text="什么情况"></asp:Label>     </div>      </form> </body> </html> UserMyControl.aspx.cs的后置代码 using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; public partial class UseLMyControl : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)      {     }     public void MyControl1_Click(object sender, EventArgs e)      {         Label1.Text = MyControl1.FindText;     } }   问题3:好像删除了这段代码 public event EventHandler ClickEventHandler;    protected void Button1_Click(object sender, EventArgs e)     {         if (ClickEventHandler != null)         {             ClickEventHandler(this, EventArgs.Empty);         }     } 也不行,请问什么原因,只要不删除public event EventHandler ClickEventHandler;这一句有可以,、为什么啊??? 这是一个教人如何使用用户控件的列子,没有其他代码了,希望大家别把问题复杂化,我没有其他代码要交代,也不会有声明在其他地方的可能
查看完整描述

7 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

这里是用户控件,ClickEventHandler的实现应该是在使用此控件的页面中的,你查找一下试试

查看完整回答
反对 回复 2019-01-21
?
湖上湖

TA贡献2003条经验 获得超2个赞

谢了

不过,我已经将,所有的代码都附上了,我的疑惑就是怎么不用对ClickEventHandler的实现进行声明

查看完整回答
反对 回复 2019-01-21
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我想问下,此段代码

public event EventHandler ClickEventHandler;
    protected void Button1_Click(object sender, EventArgs e)
     {
         if (ClickEventHandler != null)
         {
             ClickEventHandler(this, EventArgs.Empty);
         }

     }

在上下文中,究竟起了什么作用,需要的这段代码吗?这是一个教人如何使用用户控件的列子,没有

其他代码了

查看完整回答
反对 回复 2019-01-21
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

@黑夜猫头鹰: 这段 代码 就是调用事件的程序。事件的实现 代码 在其他地方实现了。

查看完整回答
反对 回复 2019-01-21
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

按我的思路去思考:

1,一个控件,是否存在于一个类里面?(答案:是)

2,一个控件,在一个类里面默认是public吗?(答案:不是)

3,那如果这个控件是一个button(比如它就是搜索),那它点了以后,想一个这是百度的页面(如果叫baidu.aspx.cs),搜索框与button是一个控件(比如是uc.cs),那么一个baidu.aspx.cs类能直接感应到button的点击吗?(答:不能,因为只有uc.cs才知道有这个button)

4,如果想让baidu.aspx.cs知道uc.cs的button呢?(答:当然是us.cs得有一个public的事件,然后baidu.aspx.cs定阅)

5,那这个public 的事件什么时候驱动它发生呢?(答:当然于button的点击去驱动这个事件发生)

现在,明白了吧。

查看完整回答
反对 回复 2019-01-21
  • 7 回答
  • 0 关注
  • 433 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信