0

宿題として、ボタンで構成されたチェッカーボードを作成するように依頼されました。このチェッカーボードのサイズは、ユーザーがテキスト ボックスで決定します。チェッカーボードのボタンの色は、赤と青の間で交互に変わります。ユーザーがいずれかのボタンをクリックした場合、その色を赤または青 (現在の色に応じて) に変更する必要があります。さらに、ボタンをクリックすると、その行のすべてのボタンの色を切り替える必要があります。

私のカラー配列には、ユーザーが入力したテキストボックスの値を使用する2 つの次元 ( rowInteger、 ) が含まれています。colInteger

動的に作成されたボタンの 1 つをクリックするための私のコードは次のとおりです。

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 の色を変更することによって) 個々のボタンの色を変更することはできますが、上記のコードを使用してその色を変更しようとすると、単に機能しません。

編集: 数時間後に再度実行した後、色はまったく変わりません。私のソリューションにエラーがある可能性があると思いますが、それが何であるかはわかりません

4

0 に答える 0