C# 为动态添加的控件添加EventHandler

C# 为动态添加的控件添加EventHandler,c#,asp.net,page-lifecycle,C#,Asp.net,Page Lifecycle,我在将一些控件添加到面板(由ModalPopupExtender“弹出”)和添加CheckedChanged-EventHandler时遇到问题 首先,当用户单击按钮时,这会发生在CreatePanelChoose()函数中: foreach (ListItem item in lbSupplier.Items) { string cbid = "cb" + i; CheckBox cb = new CheckBox(); cb.ID = cbid; cb.Tex

我在将一些控件添加到
面板
(由
ModalPopupExtender
“弹出”)和添加
CheckedChanged
-EventHandler时遇到问题

首先,当用户单击按钮时,这会发生在
CreatePanelChoose()
函数中:

foreach (ListItem item in lbSupplier.Items)
{
    string cbid = "cb" + i;
    CheckBox cb = new CheckBox();
    cb.ID = cbid;
    cb.Text = item.Text;
    cb.AutoPostBack = true;

    AjaxControlToolkit.MutuallyExclusiveCheckBoxExtender mecbe = new AjaxControlToolkit.MutuallyExclusiveCheckBoxExtender();
    mecbe.ID = "mecbe" + cbid;
    mecbe.TargetControlID = cbid;
    mecbe.Key = "SupplierKEY";
    mecbe.BehaviorID = mecbe.ID + i;

    //Also adding a Label                             

    phModalPopupExtender.Controls.Add(new LiteralControl("</br>")); //phModalPopupExtender is a PlaceHolder
    phModalPopupExtender.Controls.Add(cb);
    phModalPopupExtender.Controls.Add(mecbe);
    phModalPopupExtender.Controls.Add(lbl);

    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
    trigger.ControlID = cbid;
    trigger.EventName = "CheckedChanged";
    UpdatePanelMatrix.Triggers.Add(trigger);

    i++;
    ButtonOK.Enabled = false;

}
lblText.Text = "Select one Supplier";
ModalPopupExtender1.Show();
CreatePanelChoose
中,每次回发时,我都执行
foreach
操作!但它仍然不会触发cb\U更改检查

编辑2:

if (IsPostBack)
{
     if (recreating == true)
     {
          CreatePanelChoose();
     }
}
MSDN页面生命周期还表示:

PreInit

在启动阶段完成后和初始化之前引发 舞台开始了

将此事件用于以下操作:

创建或重新创建动态控件

所以我试着在那里重建面板。但是我没有列表项来获取值

好吧,放弃。。。 如果有人仍然有答案,那就太好了

现在我不再使用
复选框的
OnCheckedChanged
-事件。
我只是让他们选中一个
复选框
,然后在
按钮的
上单击
按钮
,我循环通过
复选框
,并检查选中的是哪一个。

您必须在
页面加载
中重新创建所有动态创建的控件(最迟)与以前相同的ID。否则不会触发事件。@TimSchmelter感谢您的回答!我现在每次都在重新创建它们,但它仍然不起作用。。。