1

この例に従うことで、ユーザー コントロール レベルでイベントを発生させ、それを aspx コード ビハインドにバブルアップしようとしました。ただし、パブリック イベントが添付されていない (または常に null) ようであるため、バブルアップすることはありません。私のコードは次のようになります。

// WebUserControl1.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="testEventeventBubbling.WebUserControl1" %>
<div>       
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>

// WebUserControl1.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("WebUserControl1 :: Page_Load <BR>");
}

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Write("WebUserControl1 :: Begin Button1_Click <BR>");
    OnBubbleClick(e);
    Response.Write("WebUserControl1 :: End Button1_Click <BR>");
}

public event EventHandler BubbleClick;

protected void OnBubbleClick(EventArgs e)
{
    // BubbleClick is always null at this point
    if (BubbleClick != null)
    {
        BubbleClick(this, e);
    }
}   

// Default.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="testEventeventBubbling._Default" %>

<%@ Register TagPrefix="wuc" TagName="BubbleControl" Src="WebUserControl1.ascx" %>
...
<wuc:BubbleControl id="BubbleControl1" runat="server" />

// Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
    BubbleControl1.BubbleClick += new EventHandler(BubbleControl1_BubbleClick);
}

void BubbleControl1_BubbleClick(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

私は正しい軌道に乗っていると確信していますが、明らかな何かを見逃したかどうかはわかりません。誰でもこれに光を当てることができますか?

前もって感謝します、

4

2 に答える 2