首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EventHandler为空

EventHandler为空
EN

Stack Overflow用户
提问于 2009-09-11 12:04:32
回答 3查看 8.9K关注 0票数 9

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

在这方面的任何帮助都将非常感谢。

我的用户控制代码是:

.ascx代码:

代码语言:javascript
复制
<asp:ImageButton ImageUrl="./images/step1.gif" 
        ID="imgstep1" runat="server" 
         OnClick="imgstep1_Click"/>

.ascx.cs代码:

代码语言:javascript
复制
    public delegate void OnImageButtonClick();
    public event OnImageButtonClick btnHandler;

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

.aspx页面代码:

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
     ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler);
}

void ucStepHdr_btnHandler()
{
  Response.Write ('test');
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-11 12:21:38

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

有回帖吗?是否确实要在每次加载页面时添加事件?

代码语言:javascript
复制
ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler);
票数 11
EN

Stack Overflow用户

发布于 2009-09-11 12:38:34

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

代码语言:javascript
复制
protected ImageButton imgstep1;

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

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

票数 1
EN

Stack Overflow用户

发布于 2009-09-11 12:08:36

看起来应该行得通..。您是否可以在调试器中单步执行代码,并在Page_Load中设置ucStepHdr.btnHandler的值后立即查看它的值?(顺便说一下,传统上这些都是在init中设置的,而不是load,但这不是您的问题。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1410475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档