我在理解设置复选框可见性对页面生命周期各个阶段的选中状态的影响时遇到了一些问题。当可见性设置为false时,复选框选中状态更改
下面给出了一个动态创建的复选框的示例代码。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
check = new CheckBox();
check.AutoPostBack = true;
check.Text = "checkbox1";
check.ToolTip = "tooltip for checkbox1";
check.CheckedChanged += new EventHandler(check_CheckedChanged);
this.Form.Controls.Add(check);
Button btn = new Button();
btn.Text = "click me";
btn.Click += new EventHandler(btn_Click);
this.Form.Controls.Add(btn);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
check.Checked = true;
check.Text = "text reassigned.";
check.ToolTip = "tooltip reassigned";
}
}
protected override void OnPreRenderComplete(EventArgs e)
{
base.OnPreRenderComplete(e);
check.Visible = false;
}
这里的问题是,当发生回发(我按一下按钮),然后我注意到在Page_Load事件,该复选框保持提示和文字的视图状态。然而,选中状态变为false,并触发CheckedChanged事件。为什么这样的行为?
此外,如果我在PageLoad()或OnPreRender()事件中设置了复选框的可见性,复选框的选中状态将保留在回传中,并且不触发CheckedChanged事件。
我只是好奇,当在OnPreRenderComplete事件中更改可见性时会发生什么不同,以便使复选框默认为未选中状态。
那有什么用?好奇吗?页面生命周期是一个已知的谜团。 –