3

ユーザー入力に応じてさまざまなユーザーコントロールをロードするパネルを備えた Winform があります。

// to load a user control
pnlContent.Controls.Add(uc1);

// to change to different user control
pnlContent.Controls.Clear();
pnlContent.Controls.Add(uc2);

pnlContent をクリアして uc1 を再度追加すると、uc1 の Load イベントがトリガーされないことに気付きました。つまり、uc1 の Load イベントは、uc1 が pnlContent に初めて追加されたときにのみトリガーされます。

ユーザー コントロールがパネルに追加されるたびに Load イベントを常にトリガーする方法はありますか? そうでない場合、どのような選択肢がありますか?

お知らせ下さい。

4

3 に答える 3

1

ユーザーがトグル ボタンを押すと、ツールボックスのように機能するコントロールが追加され、別の親コントロールから削除されます。

Loadイベント (コントロールがその親コン​​トロール コレクションに初めて追加されたときにのみトリガーされる) を使用する代わりに、 ParentChangedイベントを使用します。

次に、Parent プロパティをチェックします。null の場合は、コントロールが親コレクションから削除されたことを意味します。そうでない場合は、コントロールが追加されたばかりです。

private void MyUserControl_ParentChanged(object sender, EventArgs e)
{
    try
    {
        if (this.Parent != null) 
        {
            // Perform initializations
        }
    }
    catch (Exception ex)
    {
        // Do my normal exception handling
    }
}
于 2013-07-30T06:22:46.567 に答える