宿題として、ボタンで構成されたチェッカーボードを作成するように依頼されました。このチェッカーボードのサイズは、ユーザーがテキスト ボックスで決定します。チェッカーボードのボタンの色は、赤と青の間で交互に変わります。ユーザーがいずれかのボタンをクリックした場合、その色を赤または青 (現在の色に応じて) に変更する必要があります。さらに、ボタンをクリックすると、その行のすべてのボタンの色を切り替える必要があります。
私のカラー配列には、ユーザーが入力したテキストボックスの値を使用する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 の色を変更することによって) 個々のボタンの色を変更することはできますが、上記のコードを使用してその色を変更しようとすると、単に機能しません。
編集: 数時間後に再度実行した後、色はまったく変わりません。私のソリューションにエラーがある可能性があると思いますが、それが何であるかはわかりません