none
Panelにピクチャーボックスをコントロール配列を作る RRS feed

  • 質問

  • コントロール配列はVB6の頃はデザイン時にでき、またプログラムでもLoad命令でできましたが、VB2005ではコントロール配列はどのような命令を使うのでしょうか。

     

    PanellにPictureBoXのコントロール配列を作成する書き方が知りたいです。

    2007年2月21日 8:24

回答

  • 単に親をPanel1するだけでしょう。(Controls.AddRangeの対象がMe.Panel1)

    [DOBON.NET]コントロールの配列を作成する
    http://dobon.net/vb/dotnet/control/buttonarray.html
    2007年2月21日 8:35
  • 最初の New は配列に対しての New です。
    いわば PictureBox を格納する箱を作っただけです。

    ですので、1要素ごとにNewする必要があります。
    リンク先でも
            'インスタンス作成
            Me.testButtons(i) = New System.Windows.Forms.Button
    という記述があります。
    2007年2月21日 14:11
  • 配列の要素をNewしてからAddRangeしないとだめなのでは?

    つまり

    Me.FImage = New System.Windows.Forms.PictureBox(100) {}
    For i = 0 To 100
        Me.FImage(i) = New System.Windows.Forms.PictureBox
    Next
    Me.Panel1.Controls.AddRange(Me.FImage)

          ※Form1にTabcontrol1がありTabPage2の中にpanel1があります。

       その中にピクチャーボックスのコントロール配列を生成したいのですが、下記のような

       コードはダメですか。いちいちMeの中のTabcontrol1のTabpages(1)のPanel1の中

          という指定は不要で単にMe.Panel1でいいのでしょうか。     


    Panel1でいいと思う。
    (Me.TabControl1.TabPages(1)と指定していくと、TabePageコントロールにはPanel1という
    プロパティがあるわけではない。(Panel1というコントロールを持っているだけなのでFindうんたらで探すのかな))

    2007年2月22日 4:33

すべての返信

  • 単に親をPanel1するだけでしょう。(Controls.AddRangeの対象がMe.Panel1)

    [DOBON.NET]コントロールの配列を作成する
    http://dobon.net/vb/dotnet/control/buttonarray.html
    2007年2月21日 8:35
  • 100個のPictureBoxコントロール配列を作るため以下のようにしました 

    作成場所はフォームにタブコントロールがあり、その2番目のタブにパネルがあり、その中に入れたいです

     

    Me.FImage = New System.Windows.Forms.PictureBox(100) {}

    Me.Panel1.Controls.AddRange(Me.FImage)        ここで100個のPictureboxがFImageというコントロール名で配置されるのですか

    Filename ="C:\TEST.JPG"

      FImage(i).Image = Image.FromFile(Filename)              この行でNEWキーワードがいるとエラーがありますがなんのことかわかりません。

    NEWを使って最初の行で宣言していると思うのですが、ダメなんですか。

     

    2007年2月21日 13:05
  • 最初の New は配列に対しての New です。
    いわば PictureBox を格納する箱を作っただけです。

    ですので、1要素ごとにNewする必要があります。
    リンク先でも
            'インスタンス作成
            Me.testButtons(i) = New System.Windows.Forms.Button
    という記述があります。
    2007年2月21日 14:11
  • エラーはなくなりましたが、画像が映っていません。コードは下のようにしました。

    どこが間違っているでしょうか。

     Private FImage() As System.Windows.Forms.PictureBox   


    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

     

    Me.FImage = New System.Windows.Forms.PictureBox(100) {}

          Me.Panel1.Controls.AddRange(Me.FImage)

          ※Form1にTabcontrol1がありTabPage2の中にpanel1があります。

       その中にピクチャーボックスのコントロール配列を生成したいのですが、下記のような

       コードはダメですか。いちいちMeの中のTabcontrol1のTabpages(1)のPanel1の中

          という指定は不要で単にMe.Panel1でいいのでしょうか。     

          Me.TabControl1.TabPages(1).Panel1.Controls.AddRange(Me.FImage)

         上のコードをMe.Panel1にしたらエラーはないですが、画像が出ていないです。
           Dim Filename As String

           FImage(0) = New System.Windows.Forms.PictureBox
           Filename = "d:\デジカメ\File00001.JPG"

            FImage(0).Image = Image.FromFile(Filename)
            FImage(0).Left = 0
            FImage(0).Visible = True


     

    2007年2月22日 4:13
  • 配列の要素をNewしてからAddRangeしないとだめなのでは?

    つまり

    Me.FImage = New System.Windows.Forms.PictureBox(100) {}
    For i = 0 To 100
        Me.FImage(i) = New System.Windows.Forms.PictureBox
    Next
    Me.Panel1.Controls.AddRange(Me.FImage)

          ※Form1にTabcontrol1がありTabPage2の中にpanel1があります。

       その中にピクチャーボックスのコントロール配列を生成したいのですが、下記のような

       コードはダメですか。いちいちMeの中のTabcontrol1のTabpages(1)のPanel1の中

          という指定は不要で単にMe.Panel1でいいのでしょうか。     


    Panel1でいいと思う。
    (Me.TabControl1.TabPages(1)と指定していくと、TabePageコントロールにはPanel1という
    プロパティがあるわけではない。(Panel1というコントロールを持っているだけなのでFindうんたらで探すのかな))

    2007年2月22日 4:33
  • ご回答ありがとうございます。

    目的のことができました。

    VB2005のプログラミング作法になれていないため苦労してます。

    2007年2月22日 4:40