我有动态生成的复选框,并且有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;
}
答案 0 :(得分:0)
确保添加动态复选框的代码,尤其是事件处理程序规范,在页面生命周期的 OnInit
方法中完成。如果你不这样做,可以看到这种不可预测的状态行为。