TagControlのTabPageの分割 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 うたひこ  () 投稿日時 2008/9/12 21:39:00
>>8 
こんにちは。 
 
僕の方も、この問題について色々と試みた結果、 
 
1,プロジェクトにクラスを追加する。 
 (UserControlを追加した場合の挙動を完全に把握している場合は 
  UserControlを追加しても可) 
2、UserControlを継承させ、デザイナ画面でレイアウトする。 
3、レイアウトが終わったら、UserControlではなくTabPageを継承するように書き換える。 
4、その後もレイアウトの変更が必要な場合は一時的にUserControlに書き換える。 
 
という手法に落ち着きました。 
 
ただしこの手法は予期しないコード改変の危険性があるので、 
信頼性が強く要求されている場合には刈谷さんの方法がいいと思います。 
僕はUserControl一枚分のメモリがもったいないことと、 
階層が深くなるのがいやだと思い、この方法にしました。 
(こういった時こそソリューション分割かな…?) 
 
機会があればお試し下さい。
投稿者 刈谷勇  () 投稿日時 2008/9/12 18:58:00
>>7 
うたひこさん、こんにちは。 
回答が遅くなり申し訳ありません。 
 
結論からいいますと、教えて頂いた方法では行いませんでした。 
理由として、 
・Reflectionの知識が無く、習得に時間がかかる。 
・完全に属性を抜き出した保障が出来なく、動作不安定になることが懸念される。 
です。 
せっかく教えていただいたのに申し訳ありませんでした。 
 
代替案として行った方法は、UserControlにページの内容を作成しページ作成時にリアルタイムでUserControlを追加する方法で対応しました。 
 
また、なにかありましたらよろしくお願いします。 
 
P.S. うたひこさんが戻ってきていただいてうれしいです。
投稿者 刈谷勇  () 投稿日時 2008/8/7 22:30:00
>>6 
うたひこさん 
さらなるアドバイスありがとうございます。 
 
>そういうことですか。失礼しました。 
いえ、最初にExpressと明記しなかった私が悪いので、こちらこそ申し訳ありませんでした。 
ちなみに、Standard Editionだとこの辺の作成支援の機能があるのでしょうか? 
 
 
教えていただいた方法を早速調査して見ます。 
結論がでるまでしばらく時間がかかると思いますが、質問や最終結果が出ましたら、ご報告します。
投稿者 うたひこ  () 投稿日時 2008/8/7 20:44:00
>>5 
 
そういうことですか。失礼しました。 
 
タブコントロールについて経験値はさほどありませんが、 
「僕が同じことをやるならこうする」というプロセスを、 
実現可能か検証してはいないですが、 
ご参考程度に書いてみます。 
 
 
1、デザイン画面での編集は、 
何かの属性を付加すればできたような気がしたので、 
UserControlやControlクラスにどんな属性が付加されているかオブジェクトブラウザやReflectionの機能を用いて調査し、 
それと同じ属性を継承タブページに付加する。 
2、1によってデザイン画面での編集が実現できたら、 
継承タブページを全て特定の名前空間や 
特定のクラスの入れ子クラスにし、 
いちいちタブページが増えるたびに 
タブコントロールに追加しなくても、 
リフレクションを用いてタブコントロールに 
自動追加できる仕組みを作る。
投稿者 刈谷勇  () 投稿日時 2008/8/7 20:17:00
すみません、開発環境に誤りがありました。 
正式には VB2005 Expressです。 
(今回の質問にはあまり関係ないかもしれませんが・・・)
投稿者 刈谷勇  () 投稿日時 2008/8/7 19:57:00
>>1 
うたひこさん、こんにちは(で、いいのかな) 
 
>なんだかインテリセンスに表示されないこともありますが、TabPageを継承したコントロールをおつくりになられてはいかがですか?  
 
多分、継承で作成する場合、デザイン画面でのオブジェクトの配置等が出来なくなってしまいますよね。これだと、後々画面にオブジェクトを追加しようとしたときにレイアウトの変更が大変かと思いまして、やめてしまいました。 
 
私の知識不足の部分もあると思いますが、継承で作成した場合のアドバイスをお聞かせ願えればと思います。
投稿者 うたひこ  () 投稿日時 2008/8/7 08:15:00
こんばんわ。 
 
ちょうど今タブコントロールをいじっていて、 
実にタイムリーな話題です。 
 
 
 
なんだかインテリセンスに表示されないこともありますが、TabPageを継承したコントロールをおつくりになられてはいかがですか? 
 
ちなみにTabpageはPanelから継承されています。
投稿者 刈谷勇  () 投稿日時 2008/8/7 07:32:00
現在、VB2005で開発しています。 
 
TabControlがあるFormがあります。 
TabControl上にはTabPageが数枚あり、それぞれ別のレイアウトになっています。 
そのため、Formクラスが大きくなってしまうため、別のクラスか、ファイルに分割したいと思っています。 
 
普通に考えるとPartial Classでファイルを分割すればいいのですが、今後もTabPageのレイアウトを考えると変更するたびにPartial Classへ手作業で切り分けなくなってしまうと思います。 
 
なにかいい方法はないでしょうか? 
よろしくお願いします。