|
分類:[.NET 全般]
Visual Studio2005でC#で開発しています。
Form内にTabControlを貼り、TabPageにTextBoxやButtonの派生コントロールを貼っています。 派生コントロールではOnCreteControl()にてコントロール毎の独自初期化処理を行っています。
問題は、TabPage2ページ目以降の中に貼ってあるコントロールのOnCreateControlがFormLoad時に呼ばれないということです。 タブをクリックしてそのTabPageを表示するときに呼ばれます。 現在、FormLoad時に画面内のすべてのコントロールに値を設定しているのですが、 OnCreateControlでの初期化が行われないため、派生コントロールに値が設定できない状況になっています。 (派生コントロールは初期化しないとTeztなどの一部のプロパティが使えない仕様になっています) TabPageの派生を作って調べたところ、2ページ目以降のTabPage自体のOnCreateControlがFormLoad時に呼ばないのがわかりました。 TabPageのCreateControl()を呼んでもOnCreateControlは呼び出されませんでした。 タブ選択時にOnCretaeControlが呼ばれるのでLoadで値を設定する前に全タブをSelectTab()してやるという回避策はありますが、 何かTabControlの設定等でTabPageのOnCreateControlを呼ぶようにできないのでしょうか。
|