更改动态创建的2D阵列中按钮的颜色

时间:2013-10-12 22:53:08

标签: asp.net arrays vb.net button

对于我的作业,我被要求创建一个由按钮组成的棋盘格。该棋盘的大小由用户通过文本框确定。棋盘中按钮的颜色在红色和蓝色之间交替显示。如果用户单击其中一个按钮,则必须将其颜色更改为红色或蓝色(取决于当前颜色)。此外,单击按钮必须切换该行中每个按钮的颜色。

我的颜色数组包含两个维度(rowIntegercolInteger),它们使用用户输入的文本框值。

我点击其中一个动态创建按钮的代码如下:

Protected Sub tempBtn_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim thisButton As Button = CType(sender, Button)

    For i As Integer = color.GetLowerBound(0) To color.GetUpperBound(0)
        For j As Integer = color.GetLowerBound(1) To color.GetUpperBound(1)
            If thisButton Is color(i, j) Then
                color(i, j).BackColor = Drawing.Color.Black
            End If
        Next
    Next
End Sub

请注意,为了测试目的,我将颜色严格更改为黑色

我创建按钮的代码如下:

Private Sub createTable()
    Dim tempBtn As Button
    checkerBoard.BorderStyle = BorderStyle.Groove
    checkerBoard.BorderWidth = Unit.Pixel(2)
    checkerBoard.Controls.Clear()

    For rowInteger = 0 To CInt(rowTxtBox.Text) - 1
        Dim newTableRow As New TableRow
        checkerBoard.Controls.Add(newTableRow)

        For colInteger = 0 To CInt(colTxtBox.Text) - 1
            Dim newTableCell As New TableCell
            tempBtn = New Button
            If colInteger Mod 2 = rowInteger Mod 2 Then
                tempBtn.BackColor = Drawing.Color.Red
            Else
                tempBtn.BackColor = Drawing.Color.Blue
            End If

            tempBtn.Width = 200
            tempBtn.Height = 200
            AddHandler tempBtn.Click, AddressOf tempBtn_Click
            newTableCell.Controls.Add(tempBtn)
            newTableRow.Controls.Add(newTableCell)

            ReDim color(rowInteger, colInteger)
            color(rowInteger, colInteger) = tempBtn
        Next
    Next
End Sub

当我运行我的网站并点击一个按钮时,它的颜色变得透明。为什么会这样?我能够改变单个按钮的颜色(通过改变thisButton的颜色),但如果我尝试使用上面的代码改变它的颜色,它就不起作用。

编辑:几小时后再次运行后,颜色根本没有变化。我相信我的解决方案可能存在错误,但我不知道它是什么

0 个答案:

没有答案