TabControl内に別フォームを表示するには?

解決


カリル  2009-04-28 19:52:59  No: 145886  IP: 192.*.*.*

VB2005で作成しています。
Tabcontrolで、タブ1,タブ2,タブ3を設置しました。
タブ1,タブ2は全ユーザ固定で、タブ3のみ、ログインユーザごとのページを表示させたいのです。

現在は、タブ3内にユーザごとのパネルを設置し、その中に各種コントロールを配置しております。
ユーザ名を判断し、該当ユーザのパネルを最前面最大化にて表示しております。
ところが、最近、ユーザが増えてきまして、使用しないコントロールのために起動が遅くなってきました。

そこで、ユーザごとのパネルを廃止し、別フォームに記載したく思いました。(別フォームでは、ロードされない限り、メモリに読み込まれないため)
しかし、別フォームとして開くと、ユーザへの負担になり兼ねないので、
現状と同様の操作感覚(タブ内に表示されるように)で使用させたく思います。
イメージとしてはMDIですが、MDIは親がformのみ有効ですので、親がTabcontrol内の1タブとして、有効なコードをお教え頂けますでしょうか?

編集 削除
いけがみ  2009-04-28 20:58:13  No: 145887  IP: 192.*.*.*

ユーザコントロールを複数用意して、それぞれのユーザコントロールに必要なコントロールを貼り付けて、
ケースに応じて必要とするユーザコントロールをコード上でタブページ上のパネルに追加するというのはどうでしょう?
これならば、Formをロードするのと同じ感覚で、必要なユーザコントロールのインスタンスのみを作成するだけですので、
いいと思うのですが...

編集 削除
魔界の仮面弁士  2009-04-29 14:10:25  No: 145888  IP: 192.*.*.*

Form も Control の一種であり、配置できない事は無いですが…。
無理に Form で実装するより、UserControl を使った方が自然かと。


Private SubForm As Form
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  Button1.Enabled = False
  SubForm = New Form2()
  SubForm.TopLevel = False
  TabPage1.Controls.Add(SubForm)
  SubForm.SetBounds(5, 5, 100, 100)
  SubForm.Show()
End Sub

編集 削除
カリル  2009-04-29 16:11:04  No: 145889  IP: 192.*.*.*

「いけがみ」さん、「魔界の仮面弁士」さん、ご回答ありがとうございました。

ユーザコントロール…盲点でした。少し勉強してみます。
また、formを代入することもできるとのことで、とりあえずはこちらでやってみたいと思います。

フレームをFormBorderStyle=Noneにすると、自然ですので。。

以上、ありがとうございました。

編集 削除