首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TableLayoutPanel单细胞颜色

TableLayoutPanel单细胞颜色
EN

Stack Overflow用户
提问于 2017-09-18 21:04:06
回答 1查看 1.3K关注 0票数 0

我在vb.net中有10×10的表外面板和10×10的数组。我希望能够用鼠标单击一个单元格,该单元格会改变颜色,相应的数组元素将是1。没有单击的单元格将有一个0的数组,等等。单击另一个单元格,单元格将更改颜色,相应的数组元素将被更新。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-18 22:18:28

这些单元格不是控件,也不提供对背景色的单独控制。您可以在每个单元格中放置一个面板,并在运行时添加处理程序。此示例将在TLP中的每个单元格之间切换红色和蓝色之间的颜色。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46288186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档