3

我正在动态地将行添加到我的行中,TableLayoutPanel但我无法在那里配置高度。

代码可能看起来很长,但它是一个非常简单的代码。

关于代码的解释:

代码创建一个TableLayoutPanel并设置它的属性。之后,代码Pictureboxes根据Labels数据库中的电影数量创建。创建 aPicturebox和 a后Label,代码将它们都放在 a 中Panel,然后代码将Panel插入TableLayoutPanel. 问题是行的高度。

输出:

在此处输入图像描述

这是我正在使用的代码:

 Dim movieN As Integer = MoviesDataSet.movies.Rows.Count
    Dim tablePanel As New TableLayoutPanel

    With tablePanel
        .Size = New Point(Me.ClientRectangle.Width - 10, Me.ClientRectangle.Bottom - 55)
        .ColumnCount = 4
        .GrowStyle = TableLayoutPanelGrowStyle.AddRows
        .AutoScroll = True
        .Margin = New System.Windows.Forms.Padding(0)
        .Location = New System.Drawing.Point(5, 50)
        .CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset
        .ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 25.0!))
        .ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 25.0!))
        .ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 25.0!))
        .ColumnStyles.Add(New ColumnStyle(SizeType.Percent, 25.0!))
        .Anchor = AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Top
    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.AutoSize = True
        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)
            .Cursor = Cursors.Hand
        End With

        'here we add the controls to a layout panel to
        'manage the positioning of the controls
        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
    Next

    Me.Controls.Add(tablePanel)
End Sub

提前致谢!

4

2 回答 2

9

试试这个 :

For Each RS As RowStyle In tablePanel.RowStyles    
     RS.SizeType = SizeType.Absolute         
     RS.Height = 180    
Next
于 2013-02-05T16:49:15.620 回答
3

我得到了答案。为了设置行的高度,你所要做的就是添加这个:

tablePanel.RowStyles.Add(New RowStyle(SizeType.Absolute, 150))

你应该在添加到之后添加这一行PanelTableLayoutPanel

一个片段:

        '.... THE CODE ABOVE CAN BE SEEN IN THE QUESTION POST
        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
        tablePanel.RowStyles.Add(New RowStyle(SizeType.Absolute, 150))
        'here we add a handler for the picture boxs click event
        AddHandler myPicture.Click, AddressOf MyPictureClickEvent
    Next

    Me.Controls.Add(tablePanel)
End Sub

希望对某人有所帮助

于 2013-02-05T16:55:41.763 回答