tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルタブにコントロールの配列を作成したい
記事No10201
投稿日: 2010/08/24(Tue) 09:52
投稿者わたべ
    Private dgv() As System.Windows.Forms.DataGridView
    Private lbl() As System.Windows.Forms.Label

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
                               Handles MyBase.Load
        Dim i As Integer
        Dim Num As Integer = レコード数
        Dim TabPage As New TabPage()

        dgv = New System.Windows.Forms.DataGridView(Num) {}
        lbl = New System.Windows.Forms.Label(Num) {}

      For i = 0 To Num - 1
            'PageAdd
            tab.TabPages.Add(TabPage)
            TabPage.Text = i

            dgv(i) = New DataGridView
            lbl(i) = New Label

            dgv(i).Name = "dgv" + i.ToString()
            lbl(i).Name = "lbl" + i.ToString()

            tab.TabPages(i).Controls.Add(dgv(i))
            tab.TabPages(i).Controls.Add(lbl(i))
        Next i


ページの無いタブコントロールだけフォームに貼り付けてあります。
そのタブに取得したレコード数だけ、ページを追加し、
それぞれのページにコントロール配列のdgvとlbl等を作成したいのですが
ページは追加されるのですが、dgvとlblが表示されません

コントロール配列にしなければ追加出来る事は確認したのですが
どのようにすればよいのでしょうか?
ご教授お願いします。

[ツリー表示へ]
タイトルRe: タブにコントロールの配列を作成したい
記事No10203
投稿日: 2010/08/24(Tue) 10:07
投稿者魔界の仮面弁士
> tab.TabPages.Add(TabPage)
tab というのは、TabControl の事でしょうか?

> Dim TabPage As New TabPage()
この宣言は、ループの中に入れないと駄目ですよ。

DataGridView 等は Num 回分 New しているのに、
TabPage は 1 回しか New されていませんよね。

それと、変数名は型名は別の名前にしておいた方が良いと思います。

> dgv(i) = New DataGridView
> lbl(i) = New Label
座標も指定しましょう。
それと、「New Label」ではなく「New Label()」の方が良いと思います。
(少なくとも、TabPage の所では括弧つきで記述されていましたよね?)

> dgv(i).Name = "dgv" + i.ToString()
> lbl(i).Name = "lbl" + i.ToString()
文字列連結では「+」ではなく「&」を使いましょう。

> tab.TabPages(i).Controls.Add(dgv(i))
> tab.TabPages(i).Controls.Add(lbl(i))
tab.TabPages(i) の代わりに、ループ内に移動させた変数 TabPage を使いましょう。

[ツリー表示へ]
タイトルRe^2: タブにコントロールの配列を作成したい
記事No10204
投稿日: 2010/08/24(Tue) 10:31
投稿者わたべ
魔界の仮面弁士様

解決しました
ご教授ありがとうございました。

[ツリー表示へ]