2017-09-18 101 views
0

我在vb.net中有10个10个tablelayoutpanel和10个10个数组。我希望能够用鼠标单击一个单元格,并且该特定单元格将更改颜色,并且相应的数组元素将为1.未单击的单元格将在数组中有0,依此类推。单击另一个单元格,单元格将更改颜色并更新相应的数组元素。TableLayoutPanel个别单元格颜色

我不知道如何改变tableLayoutPanel中单个单元格的颜色,一旦鼠标按钮单击该单元格上。

试图通过谷歌搜索寻找想法,但似乎无法找到具体的东西。任何帮助将非常感激。

回答

0

这些单元格不是控件,也不提供对背景色的单独控制。您可以在每个单元格中放置一个面板,并在运行时添加处理程序。此示例将切换您在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