动态创建的控件的事件处理程序

本文关键字:程序 事件处理 控件 动态 创建 | 更新日期: 2023-09-27 18:34:48

我正在动态创建一个 asp.net RadioButton并将其插入我的网页:

RadioButton rb = new RadioButton();
rb.ID  = "rb" + ReportPKey;
rb.Text = "ReportName";
phUiControls.Controls.Add(rb);

我有以下方法:

protected void rb_CheckedChanged( object sender, EventArgs e )
{
    // stuff
}

如何连接它,以便在单击rb时触发rb_CheckedChanged

动态创建的控件的事件处理程序

rb.CheckedChanged += rb_CheckedChanged

使用匿名委托执行此操作的一种方法(对于这些类型的方案是干净的(:

var rb = new RadioButton{ ID = "rb" + ReportPKey, Text = "ReportName" };
phUiControls.Controls.Add( rb );
rb.CheckedChanged += (sender, e) => {
    // event handler code
};

或者(正如其他几个人指出的那样(:

rb.CheckedChanged += rb_CheckedChanged

在页面生命周期的上下文中:

protected override OnInit( EventArgs e ){
    BuildDynamicControls();
    base.OnInit( e );
}
private void BuildDynamicControls(){
    var rb = new RadioButton{ ID = "rb" + ReportPKey, Text = "ReportName" };
    phUiControls.Controls.Add( rb );
    rb.CheckedChanged += (sender, e) => {
        // event handler code
    };
}
RadioButton rb = new RadioButton();
rb.ID  = "rb"+ReportPKey;
rb.Text = ReportName  ;
rb.CheckedChanged += rb_CheckedChanged
phUiControls.Controls.Add(rb);