我正在尝试从用户控件引发click事件,并在包含页面上对其进行处理。我遇到的问题是,当我单击用户控件上的按钮“imgstep1”时,会触发imgstep1_click事件背后的代码,但是“btnHandler”事件始终为空。因此,它不会调用父事件。

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

我的用户控制代码是:

.ascx代码:

<asp:ImageButton ImageUrl="./images/step1.gif"
        ID="imgstep1" runat="server"
         OnClick="imgstep1_Click"/>

.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);

关于c# - EventHandler为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1410475/

10-13 09:36