C# 在复合控件中动态关联按钮单击事件

C# 在复合控件中动态关联按钮单击事件,c#,asp.net,button,composite-controls,C#,Asp.net,Button,Composite Controls,我有一个自定义复合控件NoteHeaderDiv,其中包含一个按钮: //NoteHeaderControl代码段 公共事件事件处理程序OnEditClick; 受保护的无效btnEdit\u单击(对象发送者,事件参数e) { 如果(OnEditClick!=null) { OnEditClick(发送者,e); } } public NoteHeaderControl() { this.noteHeaderDiv=新的HtmlGenericControl(“div”); this.noteHe

我有一个自定义复合控件
NoteHeaderDiv
,其中包含一个按钮:

//NoteHeaderControl代码段
公共事件事件处理程序OnEditClick;
受保护的无效btnEdit\u单击(对象发送者,事件参数e)
{
如果(OnEditClick!=null)
{
OnEditClick(发送者,e);
}
}
public NoteHeaderControl()
{
this.noteHeaderDiv=新的HtmlGenericControl(“div”);
this.noteHeaderDiv.ID=“noteHeaderDiv”;
this.noteHeaderDiv.Attributes.Add(“class”,“noteHeaderDiv”);
this.imagePlaceHolder=新的HtmlGenericControl(“span”);
this.imagePlaceHolder.ID=“imagePlaceHolder”;
this.imagePlaceHolder.Attributes.Add(“class”,“noteCollected”);
this.lblNoteDate=新标签();
this.lblNoteDate.ID=“lblNoteDate”;
this.lblNoteDate.CssClass=“noteDate”;
this.lblNoteTitle=新标签();
this.lblNoteTitle.ID=“lblNoteTitle”;
this.lblNoteTitle.CssClass=“notetTitle”;
this.lblNoteAuthorName=新标签();
this.lblNoteAuthorName.ID=“lblNoteTitle”;
this.lblNoteAuthorName.CssClass=“noteAuthor”;
this.editButton=新按钮();
this.editButton.CssClass=“editNoteButton”;
this.editButton.ToolTip=“Editovat”;
this.editButton.ID=“editButton”;
this.editButton.OnClientClick=“showEditDialog('editPerson');”;
this.editButton.Click+=btnEdit\u Click;
this.addTeamTaskButton=新的HtmlGenericControl(“按钮”);
this.addTeamTaskButton.ID=“addTeamTaskButton”;
这个.addTeamTaskButton.Attributes.Add(“类”,“addTeamTaskButton”);
addTeamTaskButton.Attributes.Add(“onclick”、“showDialog('editPerson');”;
这个.addTeamTaskButton.Attributes.Add(“title”,“NovýTeam Task”);
}
#区域保护覆盖无效CreateChildControls()
受保护的覆盖无效CreateChildControls()
{
base.CreateChildControls();
this.lblNoteDate.Text=String.Format(“{0}.{1}.”,this.noteDate.Day,this.noteDate.Month);
this.lblNoteTitle.Text=noteTitle;
this.lblNoteAuthorName.Text=noteAuthorName;
//this.editButton.Click+=btnEdit\u Click;
this.noteHeaderDiv.Controls.Add(imagePlaceHolder);
this.noteHeaderDiv.Controls.Add(lblNoteDate);
this.noteHeaderDiv.Controls.Add(lblNoteTitle);
this.noteHeaderDiv.Controls.Add(lblNoteAuthorName);
this.noteHeaderDiv.Controls.Add(编辑按钮);
this.noteHeaderDiv.Controls.Add(addTeamTaskButton);
this.Controls.Add(noteHeaderDiv);
}
受保护的覆盖无效OnInit(事件参数e)
{
CreateChildControls();
碱基.奥尼特(e);
}
然后在
Page\u Load
中,我将公共事件连接到另一个处理程序。问题是,
btnEdit\u Click
永远不会触发。如果我在我的
页面中动态创建一个按钮,并将其直接连接到我的
页面中定义的事件处理程序,那么一切都会按预期工作


关于如何让它工作有什么建议吗?我不知道我做错了什么。

您是否尝试在
Page\u Init
中连接事件?不,我认为如果它与动态创建的按钮(这些按钮不是自定义控件的一部分)配合良好,就没有必要了。但我会试一试。