ページのライフサイクルのさまざまな段階で、チェックボックスの表示をチェック状態に設定することの影響を理解するのに問題があります。
以下に、動的に作成されたチェックボックスのサンプルコードを示します。
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イベントで可視性が変更され、チェックボックスがデフォルトでオフの状態になると、どう違うか知りたいだけです。