tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^7: TabControlをTabStripのように使いたい
投稿日: 2007/08/31(Fri) 11:04
投稿者魔界の仮面弁士
>> 皐月さん (No.6112)
> TabControlはTabStripと同じ用に使用することはできないのでしょうか?

できますよ。
そういうときには、子コントロールを TabPage の上に配置するのではなく、
フォームに直接配置すれば良いかと思います。


まずはデザイン時に、DataGridView をフォームに直接貼り付けてください。
その DataGridView を選択後、右クリックして[最前面へ移動]を選択してから、
DataGridView を TabControl に重なる位置まで移動させれば OK。
移動には矢印キーを使うか、DataGridView の Location プロパティを手動設定で。



>> るしぇさん (No.6190)
> [VB6.0]のときは Container プロパティがあったけど、.NET以後だと
> Controls プロパティのコレクションに追加するのでは?

その方法でもできますが、親コントロールを変更する目的であれば、
Parent プロパティを設定する方がわかりやすいかも知れません。
(VB6 の Container プロパティの処理イメージにも近いですしね)



>> ダンボさん (No.6207)
> どうしてこんな便利なContainerプロパティを無くすんでしょう?

.NET にも Containerプロパティ自体は存在しますが、VB6 とは意味が変わっていますね。
VB6 の Container は、親コントロール(コンテナ コントロール)を指すプロパティですが、
.NET の Container は、(コントロールではなく)コンポーネントを管理するものです。
(コンポーネントの例としては、System.Windows.Forms.Timer などがあります)


そもそも .NET では、コントロールの親子関係をわかりやすくするため、VB6 とは
コントロールの管理方法が変化しています。たとえば、以下の 2 つの構成を比べてみましょう。

<VB6>                 <.NET>
 Form1                  Form1
 ├Frame1               ├GroupBox1
 │├Frame2             │├GroupBox2
 ││└Command1         ││└Button1
 │└Command2           │└Button2
 └Command3             └Button3


<VB6>
 Me.Controls        … すべてのコントロールを示す。(Frame1, Frame2, Command1, Command2, Command3)
 
 Frame1.Parent      … Form1 を示す。
 Frame2.Parent      … Form1 を示す。
 Command1.Parent    … Form1 を示す。
 Command2.Parent    … Form1 を示す。
 Command3.Parent    … Form1 を示す。
 
 Frame1.Container   … Form1  を示す。
 Frame2.Container   … Frame1 を示す。
 Command1.Container … Frame2 を示す。
 Command2.Container … Frame1 を示す。
 Command3.Container … Form1  を示す。


<.NET>
 Me.Controls        … フォーム直下のコントロールを示す。(GroupBox1, Button3)
 GroupBox1.Controls … GroupBox1直下のコントロールを示す。(GroupBox2, Button2)
 GroupBox2.Controls … GroupBox2直下のコントロールを示す。(Button1)
 
 GroupBox1.Parent   … Form1     を示す。
 GroupBox2.Parent   … GroupBox1 を示す。
 Button1.Parent     … GroupBox2 を示す。
 Button2.Parent     … GroupBox1 を示す。
 Button3.Parent     … Form1     を示す。


VB6 の場合、「○○の親コントロール」は得やすいですが(Container プロパティ)、
「××の子コントロール」を得る方法が用意されていませんでした。

一方.NET の場合、親は Parent プロパティ、子は Controls プロパティで管理され、
コントロールの階層構造を容易に把握できるようになっていますね。



ちなみに .NET では、Form も Control の一種となったため、こんなことも可能です。

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim F As New Form()
    F.Text = "サンプル"
    F.TopLevel = False
    Me.Controls.Add(F)   'Me ではなく、Button1 や RichTextBox1 の上にも配置可能。
    F.Visible = True
End Sub

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。