在复选框的事件处理程序中获取错误的发件人

时间:2014-08-14 06:14:49

标签: asp.net

我有动态生成的复选框,并且有EventHandler,它负责检查任何复选框的检查更改。问题是如果我取消选中任何一个复选框,它将获取所有其他复选框作为发件人,并根据复选框的次数调用checkchange。如果有3个复选框,并且未选中1,则checkchange事件处理程序被调用2次。我不明白发生了什么。

    CheckBox chkbox;
        panelDynamicCheckbox.Controls.Clear();
        foreach(string product in products)
        {
            chkbox = new CheckBox();
            chkbox.ID = product;
            chkbox.Text = product;
            chkbox.AutoPostBack = true;                
            chkbox.CheckedChanged += new EventHandler(this.CheckChanged);
            panelDynamicCheckbox.Controls.Add(chkbox);
       }


     protected void CheckChanged(object sender, EventArgs e)
     {
         CheckBox checkbox = (CheckBox)sender;
     }

1 个答案:

答案 0 :(得分:0)

确保添加动态复选框的代码,尤其是事件处理程序规范,在页面生命周期的 OnInit 方法中完成。如果你不这样做,可以看到这种不可预测的状态行为。