0

垂直方向の間隔でパネルにコントロールを追加しようとしていますか?

これは今のところ私のコードです:

 Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click

    Dim pic As PictureBox = New PictureBox()
    Dim lb As Label = New Label()
    Dim cells As Integer = MoviesDataSet.movies.Count
    ReDim mypb(cells)
    ReDim mylb(cells)
    Dim k As Integer = 0
    For Each movie As DataRow In MoviesDataSet.movies

        pic.ImageLocation = Application.StartupPath & "\" & movie("moviePhoto")
        pic.Size = New System.Drawing.Size(x, y)
        pic.SizeMode = PictureBoxSizeMode.StretchImage
        pic.Margin = New System.Windows.Forms.Padding(0, 0, 0, 5)
        mypb(k) = pic

        lb.Text = movie("movieName")
        lb.AutoSize = True
        lb.Margin = New System.Windows.Forms.Padding(0, 0, 0, 10)
        mylb(k) = lb

        k += 1

    Next

    For i As Integer = 0 To MyPB.Count - 1 Step 1
        Panel1.Controls.Add(MyPB(i))
        Panel1.Controls.Add(MyLb(i))
    Next
End Sub

パネルの幅は約180、高さは約170です。コンテンツがパネルの高さよりも高い場合は、スクロールバーが表示されます。コードは同じ場所にすべてのコントロールを追加しているので、最後の写真しか見ることができません。

写真、ラベル、別の写真などが表示されるようにするにはどうすればよいですか。

ありがとう!

4

1 に答える 1

1

コントロールに配置する画像をすべて同じ位置ではなく垂直方向に配置する場合は、コントロールに配置する前に、コントロールの新しい位置を計算する必要があります。

Dim index As Integer = 0
For i As Integer = 0 To 10

    Dim picture As New PictureBox() With
    {
        .Size = New Size(100, 30),
        .Location = New Point(10, .Height + (i * 40)),
        .BackColor = Color.Red
    }

    Panel1.Controls.Add(picture)
Next

私は明らかにあなたのコードをテストすることはできませんが、この種のロジックで十分です:

pic.Location = new Point(10, pic.Height + (k * 40)
于 2013-02-02T20:47:08.833 に答える