我在理解設置複選框可見性對頁面生命週期各個階段的選中狀態的影響時遇到了一些問題。當可見性設置爲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事件中更改可見性時會發生什麼不同,以便使複選框默認爲未選中狀態。
那有什麼用?好奇嗎?頁面生命週期是一個已知的謎團。 –