3

我正在尝试在每个单元格中TableLayoutPanel使用PictureBox+ 。Label我已经做好了,但我无法将单元格大小设置为相同!我试图有 4 列,行数无穷无尽,我希望单元格在Label宽度内,除非Label宽度小于Picture宽度。

现在,我的代码几乎可以工作,只是没有设置单元格大小,因为我不知道该怎么做。

这是我的代码:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim movieN As Integer = MoviesDataSet.movies.Rows.Count
    Dim tablePanel As New TableLayoutPanel

    With tablePanel
        .Size = New Point(650, 450)
        .ColumnCount = 4
        .GrowStyle = TableLayoutPanelGrowStyle.AddRows
        .AutoScroll = True
        .Margin = New System.Windows.Forms.Padding(0)
        .Location = New System.Drawing.Point(5, 50)
        .CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset
    End With


    For Each MovieRow As DataRow In MoviesDataSet.Tables("movies").Rows
        'define two new controls to be added
        Dim myLabel As New Label
        Dim myPicture As New PictureBox
        Dim container As New Panel

        'set the properties of the new controls
        myLabel.Text = MovieRow("movieName")
        myLabel.Location = New System.Drawing.Point(30, 110)
        With myPicture
            .Image = Image.FromFile(MovieRow("moviePhoto"))
            .Tag = MovieRow("ID")
            .Size = New System.Drawing.Size(100, 100)
            .SizeMode = PictureBoxSizeMode.StretchImage
            .Location = New System.Drawing.Point(2, 2)
        End With

        'here we add the controls to a flow layout panel to
        'manage the positioning of the controls but you could
        'explicitly set the location of the controls if you 
        'just wanted to add them to the forms controls collection
        With container
            .Dock = DockStyle.Fill
            .Margin = New System.Windows.Forms.Padding(0)
            .Controls.Add(myPicture)
            .Controls.Add(myLabel)
        End With


        With tablePanel.Controls
            .Add(container)
        End With

        'here we add a handler for the picture boxs click event
        AddHandler myPicture.Click, AddressOf MyPictureClickEvent
        AddHandler myPicture.MouseHover, AddressOf MyPictureHoverEvent
    Next
    Me.Controls.Add(tablePanel)
End Sub
4

1 回答 1

0

如果您希望单元格宽度与PictureBoxor中的较宽者相同Label,并且通过将它们包装在 a 中将它们放置在同一个单元格中,Panel则将Panel's AutoSizeMode属性设置为AutoSizeMode.GrowAndShrink,并将其AutoSize属性设置为True。如果你然后对它做同样的事情,TableLayoutPanel它将使每个单元格根据它的大小增长或缩小,Panel并且Panel会根据它内部控件的大小做同样的事情。

于 2013-05-22T00:03:24.003 回答