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

Asp.net 在复选框的事件处理程序中获取错误的发件人,asp.net,Asp.net,我已经动态生成了复选框,并拥有EventHandler,它负责检查任何复选框的更改。问题是,如果我取消选中任何一个复选框,它会将所有其他复选框作为发送者,并根据复选框的数量多次调用checkchange。如果有3个复选框且1未选中,则会调用checkchange事件处理程序2次。我不明白发生了什么事 CheckBox chkbox; panelDynamicCheckbox.Controls.Clear(); foreach(string product

我已经动态生成了复选框,并拥有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;
     }

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

我从OnInit调用了一个方法,该方法动态生成复选框。但我必须再次从Page_Load调用该方法,因为回发动态生成的复选框会被删除。如果我动态创建复选框,我必须在统计上添加22个复选框,并使它们可见/不可见。所以请帮帮我。