我想知道为什么不触发事件以及如何找到哪个复选框控件触发了事件。

chkList1 = new CheckBox();
                            chkList1.Text = row["subj_nme"].ToString();
                            chkList1.ID = row["subjid"].ToString();
                            chkList1.Checked = true;
                            chkList1.Font.Name = "Verdana";
                            chkList1.Font.Size = 12;
                            chkList1.AutoPostBack = true;
                            chkList1.CheckedChanged += new EventHandler(CheckBox_CheckedChanged);
                            Panel1.Controls.Add(chkList1);

protected void CheckBox_CheckedChanged(object sender, EventArgs e)
            {
                Label1.Text = "Called";
            }

最佳答案

如果事件未触发,则可能是由于以下两个原因之一:


在页面生命周期中重新创建控件太晚了。尝试在OnInit期间创建控件。
验证阻止回发。要解决此问题,可以在所有CheckBox控件上将CausesValidation设置为false。


您可以使用sender参数找出哪个控件触发了事件。

protected void CheckBox_CheckChanged(object sender, EventArgs e)
{
    //write the client id of the control that triggered the event
    Response.Write(((CheckBox)sender).ClientID);
}

10-06 12:07