Loadcontrol 事件正在工作,但如何工作?

发布于 2024-11-30 16:30:29 字数 766 浏览 0 评论 0原文

页面代码:

public partial class Default2 : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        Uctest ctrl = (Uctest) this.LoadControl("Uctest.ascx");
        ctrl.ID = "aaa111";
        Page.Controls.Add(ctrl);
    }
}

Ascx 代码:

public partial class Uctest : UserControl
{
    protected void btn1_Click(object sender, EventArgs e)
    {
    }
}

我有一个页面ascx。 ascx 包含 asp:buttonasp:textbox

我的目标是达到“btn1_Click”事件。

这是有效的。 - 当我按下按钮时,它会进入事件并且一切正常。

但我不明白为什么。 因为每次回发都会重新创建控件再次,所以他如何知道将按下的事件附加到即将到来的新创建的ascx(因为回发)?

Page Code :

public partial class Default2 : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        Uctest ctrl = (Uctest) this.LoadControl("Uctest.ascx");
        ctrl.ID = "aaa111";
        Page.Controls.Add(ctrl);
    }
}

Ascx Code :

public partial class Uctest : UserControl
{
    protected void btn1_Click(object sender, EventArgs e)
    {
    }
}

I have a page and ascx. the ascx contains asp:button and asp:textbox

My goal is to reach to the 'btn1_Click' event.

this is working. - when i press the button it goes to the event and its all ok.

but i cant understand why.
because each postback it is RECREATING the CONTROL AGAIN , so how does he knows to attch the pressed event to the upcoming new created ascx (because of the postback) ??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ま昔日黯然 2024-12-07 16:30:30

当您回发时,您将重新创建用户控件。

包含事件方法的是用户控件,并且设置事件委托的是用户控件,因此每次创建用户控件的实例时,它也会创建事件方法并附加到它,这是有意义的。

When you post back, you're re-creating the user control.

It is the user control that contains the event method and it is the user control that sets up the event delegation, so it makes sense that each time you create an instance of the user control, it also creates the event method and attaches to it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文