tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルSpritContainer内にFormを配置する方法
記事No10250
投稿日: 2010/10/11(Mon) 20:47
投稿者Hiro
作成環境:Windoes7・VB2008

現在、SpritContainerを用いて、
Panel1には、メニューとして各種機能を開くボタン(以下機能ボタン)を設置し、
Panel2には、WindowsFormを表示する使い方を考えております。

動作は、
機能ボタン押下のイベントで、Panel2内に子フォームを挿入し、
DockをFillに..という流れです。

最初は"子フォーム"をPanelを複数置き、機能ボタン押下のイベントで
Visible のtrue/False を変更し制御していましたが、
Panelではなく、WindowsFormを使ったほうが、各機能のソースを分割できて効率がよいとの判断をしました。

ここで現在悩んでいる個所があります。
通常のForm1.Show()を使用した子フォームの表示ではなく、
子フォームをSpritContainerのPanel2内に表示する方法がわかりません。
できれば、子フォームの表示位置を調整する方法ではなく、
Panel2の子に置きDockをFillにして使用したいのです。
(親フォームやSpritContainerのサイズ変更に対応する目的です)

    Dim F_fForm As Form = New Form()

    F_fForm = MyHome.Form1
    SpritContainer1.Panel2.Controls.Add(F_fForm)
上記の方法で書いてみましたが動作せず、過去ログにも同様の質問が見当たらなかったため質問いたしました。

複数フォームを使用した設計は初めてのため、そもそも上記の構造に問題があるのかもしれませんが、どなたかご教授願います。

[ツリー表示へ]
タイトルRe: SplitContainer内にFormを配置する方法
記事No10251
投稿日: 2010/10/11(Mon) 21:07
投稿者魔界の仮面弁士
> 現在、SpritContainerを用いて、
sprit(斜檣)ではなく
split(分割)ですよ。

> Panel1には、メニューとして各種機能を開くボタン(以下機能ボタン)を設置し、
> Panel2には、WindowsFormを表示する使い方を考えております。
あまりおすすめはできませんが、一応、技術的には可能です。

Imports System
Imports System.Windows.Forms
Class Form1 : Inherits Form
  Shared Sub Main()
    Application.Run(New Form1())
  End Sub
  Private SC As SplitContainer
  Sub New()
    SC = New SplitContainer() With {.Dock = DockStyle.Fill}
    Controls.Add(SC)
    Dim B As New Button() With {.Text = "Button1"}
    SC.Panel1.Controls.Add(B)
    SC.Panel2.BackColor = System.Drawing.Color.Yellow
    AddHandler B.Click, AddressOf Test
  End Sub
  Sub Test()
    Dim F As New Form() With {.Text = "SubForm", .TopLevel = False}
    SC.Panel2.Controls.Add(F)
    F.Show()
  End Sub
End Class

[ツリー表示へ]
タイトルRe^2: SpritContainer内にFormを配置する方法
記事No10252
投稿日: 2010/10/11(Mon) 22:43
投稿者Hiro
ありがとうございます。
おかげさまで解決しました。

> あまりおすすめはできませんが...
FormやPanel等の扱い方について知識認識が浅いので、
基本的な部分をおさらいしてみることにします。

[ツリー表示へ]