Vb.net 如何设置行';桌面布局面板中的s高度

Vb.net 如何设置行';桌面布局面板中的s高度,vb.net,winforms,visual-studio-2010,Vb.net,Winforms,Visual Studio 2010,我正在动态地将行添加到我的表格布局面板中,但我无法在其中配置高度 代码可能看起来很长,但非常简单 关于代码的解释: Dim movieN As Integer = MoviesDataSet.movies.Rows.Count Dim tablePanel As New TableLayoutPanel With tablePanel .Size = New Point(Me.ClientRectangle.Width - 10, Me.ClientRecta

我正在动态地将行添加到我的
表格布局面板中
,但我无法在其中配置高度

代码可能看起来很长,但非常简单

关于代码的解释:

 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
代码创建一个
TableLayoutPanel
,并设置其属性。然后,代码根据数据库中有多少电影创建
图片框
标签
。创建
Picturebox
Label
后,代码将两者都放入
面板
,然后代码将
面板
插入
表格布局面板
。问题是这一排的高度

输出:

 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

以下是我正在使用的代码:

 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
提前谢谢

试试这个:

For Each RS As RowStyle In tablePanel.RowStyles    
     RS.SizeType = SizeType.Absolute         
     RS.Height = 180    
Next

我得到了答案。要设置行的高度,只需添加以下内容:

tablePanel.RowStyles.Add(New RowStyle(SizeType.Absolute, 150))
您应该在将
面板添加到
表格布局面板中后添加此行

片段:

        '.... 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

希望能帮助别人

最后一排是不是让你烦恼?一切都让我烦恼。第一行没有显示标签,这是因为该行没有足够的高度,我不知道怎么做。。我想将所有行的高度设置为180谢谢你的回复,但我已经找到了解决方案!