我无法理解在页面生命周期的各个阶段设置复选框可见性对选中状态的影响。
下面给出了动态创建的复选框的示例代码。
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 事件中更改可见性以使复选框默认为未选中状态时会发生什么不同。