【问题标题】:TableLayoutPanel individual cell colorTableLayoutPanel 单个单元格颜色
【发布时间】:2017-09-18 21:04:06
【问题描述】:

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

一旦鼠标按钮单击该单元格,我不确定如何更改 tableLayoutPanel 中单个单元格的颜色。

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

【问题讨论】:

    标签: vb.net tablelayoutpanel


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多