EventHandler为null

我试图从用户控件中引发单击事件并在包含页面上处理它。 我遇到的问题是,当我点击用户控件上的’imgstep1’按钮时,imgstep1_click事件后面的代码会触发,但’btnHandler’事件总是为空。 因此它不会调用父事件。

任何有关这方面的帮助将不胜感激。

我的用户控制代码是:

.ascx代码:

 

.ascx.cs代码:

  public delegate void OnImageButtonClick(); public event OnImageButtonClick btnHandler; protected void imgstep1_Click(object sender, ImageClickEventArgs e) { if (btnHandler != null) btnHandler(); } 

.aspx页面代码:

 protected void Page_Load(object sender, EventArgs e) { ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler); } void ucStepHdr_btnHandler() { Response.Write ('test'); } 

代码看起来很简单,可以正常工作。 btnHandler为null的唯一原因可能是因为未调用aspx页面中的事件注册代码。

有回帖吗? 你确定你在页面加载的每个时间添加事件???

 ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler); 

如果您删除OnClick="imgstep1_Click"并将其放入ascx.cs中

 protected ImageButton imgstep1; protected override void OnInit(EventArgs e) { this.imgstep1.Click += new ImageClickEventHandler(imgstep1_Click); } 

这种连接事件的方法是否有效?

它看起来应该可以工作……你可以单步执行调试器中的代码,并在Page_Load中设置它后立即查看ucStepHdr.btnHandler的值是什么? (暂且不说,传统上这些是在init中设置而不是加载,但这不是你的问题。)