VB2005で作成しています。
Tabcontrolで、タブ1,タブ2,タブ3を設置しました。
タブ1,タブ2は全ユーザ固定で、タブ3のみ、ログインユーザごとのページを表示させたいのです。
現在は、タブ3内にユーザごとのパネルを設置し、その中に各種コントロールを配置しております。
ユーザ名を判断し、該当ユーザのパネルを最前面最大化にて表示しております。
ところが、最近、ユーザが増えてきまして、使用しないコントロールのために起動が遅くなってきました。
そこで、ユーザごとのパネルを廃止し、別フォームに記載したく思いました。(別フォームでは、ロードされない限り、メモリに読み込まれないため)
しかし、別フォームとして開くと、ユーザへの負担になり兼ねないので、
現状と同様の操作感覚(タブ内に表示されるように)で使用させたく思います。
イメージとしてはMDIですが、MDIは親がformのみ有効ですので、親がTabcontrol内の1タブとして、有効なコードをお教え頂けますでしょうか?
ユーザコントロールを複数用意して、それぞれのユーザコントロールに必要なコントロールを貼り付けて、
ケースに応じて必要とするユーザコントロールをコード上でタブページ上のパネルに追加するというのはどうでしょう?
これならば、Formをロードするのと同じ感覚で、必要なユーザコントロールのインスタンスのみを作成するだけですので、
いいと思うのですが...
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
「いけがみ」さん、「魔界の仮面弁士」さん、ご回答ありがとうございました。
ユーザコントロール…盲点でした。少し勉強してみます。
また、formを代入することもできるとのことで、とりあえずはこちらでやってみたいと思います。
フレームをFormBorderStyle=Noneにすると、自然ですので。。
以上、ありがとうございました。