我正在尝试在每个单元格中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