TableLayoutPanel 单个单元格颜色
TableLayoutPanel individual cell color
我在 vb.net 中有一个 10 x 10 的 tablelayoutpanel 和一个 10 x 10 的数组。我希望能够用鼠标单击一个单元格,该特定单元格会改变颜色,相应的数组元素将为 1。未单击的单元格在数组中的值为 0,依此类推。单击另一个单元格,该单元格会更改颜色并更新相应的数组元素。
我不确定如何在 tableLayoutPanel 中的单个单元格上单击鼠标按钮后更改该单元格的颜色。
尝试通过 google 搜索寻找想法,但似乎找不到具体的东西。任何帮助将不胜感激。
这些单元格不是控件,也不提供对背景颜色的单独控制。您可以在每个单元格中放置一个面板,并在运行时添加处理程序。此示例将在 TLP
中的每个单元格的红色和蓝色之间切换颜色
Private panels As New Dictionary(Of Panel, Point)()
Private values(9, 9) As Integer
Private Sub PanelClick(sender As Object, e As EventArgs)
Dim s = DirectCast(sender, Panel)
Dim x = panels(s).X
Dim y = panels(s).Y
values(x, y) = If(values(x, y) = 0, 1, 0)
s.BackColor = If(values(x, y) = 0, Color.Red, Color.Blue)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For i = 0 To TableLayoutPanel1.ColumnCount - 1
For j = 0 To TableLayoutPanel1.RowCount - 1
Dim s = TableLayoutPanel1.GetControlFromPosition(i, j)
If s IsNot Nothing Then
Dim p = DirectCast(TableLayoutPanel1.GetControlFromPosition(i, j), Panel)
panels.Add(p, New Point(i, j))
AddHandler p.Click, AddressOf PanelClick
End If
Next
Next
End Sub
我在 vb.net 中有一个 10 x 10 的 tablelayoutpanel 和一个 10 x 10 的数组。我希望能够用鼠标单击一个单元格,该特定单元格会改变颜色,相应的数组元素将为 1。未单击的单元格在数组中的值为 0,依此类推。单击另一个单元格,该单元格会更改颜色并更新相应的数组元素。
我不确定如何在 tableLayoutPanel 中的单个单元格上单击鼠标按钮后更改该单元格的颜色。
尝试通过 google 搜索寻找想法,但似乎找不到具体的东西。任何帮助将不胜感激。
这些单元格不是控件,也不提供对背景颜色的单独控制。您可以在每个单元格中放置一个面板,并在运行时添加处理程序。此示例将在 TLP
中的每个单元格的红色和蓝色之间切换颜色Private panels As New Dictionary(Of Panel, Point)()
Private values(9, 9) As Integer
Private Sub PanelClick(sender As Object, e As EventArgs)
Dim s = DirectCast(sender, Panel)
Dim x = panels(s).X
Dim y = panels(s).Y
values(x, y) = If(values(x, y) = 0, 1, 0)
s.BackColor = If(values(x, y) = 0, Color.Red, Color.Blue)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For i = 0 To TableLayoutPanel1.ColumnCount - 1
For j = 0 To TableLayoutPanel1.RowCount - 1
Dim s = TableLayoutPanel1.GetControlFromPosition(i, j)
If s IsNot Nothing Then
Dim p = DirectCast(TableLayoutPanel1.GetControlFromPosition(i, j), Panel)
panels.Add(p, New Point(i, j))
AddHandler p.Click, AddressOf PanelClick
End If
Next
Next
End Sub