0

ゲームを作るために64個のボタン(8行8列)を描画しようとしましたが、何らかの理由で私のコードが動作しません。誰かがこれで私を助けてくれることを願っています。

Public Class Form1
Dim AMOUNTOF_COLUMNS As Integer = 8
Dim AMOUNTOF_ROWS As Integer = 8
Public Function setNew(row As Integer, column As Integer) As Button

    Dim newButton As New Button()
    newButton.Width = 40
    Me.Controls.Add(newButton)
    newButton.Left = 0
    newButton.Top = 0
    newButton.Height = newButton.Width
    newButton.Text = ""
    newButton.Tag = (column + (row * AMOUNTOF_COLUMNS))
    AddHandler newButton.MouseDown, AddressOf Klik
    Return newButton
End Function

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    For value1 As Integer = 0 To AMOUNTOF_ROWS Step 1
        For value2 As Integer = 0 To AMOUNTOF_COLUMNS Step 1
            Me.setNew(value1, value2)
        Next
    Next
End Sub

このコードを実行すると、ボタンが 1 つだけ描画されます。

4

2 に答える 2

1

ボタンを隣り合わせに描画するようにメソッドを変更し、それに応じてボタンLeftTopプロパティを設定する必要があります。

Public Function setNew(row As Integer, column As Integer) As Button

    Dim newButton As New Button()
    newButton.Width = 40
    newButton.Height = newButton.Width
    Me.Controls.Add(newButton)
    newButton.Left = column * newButton.Width ' you may need some offset here too
    newButton.Top = row * newButton.Height ' you may need some offset here too
    newButton.Text = ""
    newButton.Tag = (column + (row * AMOUNTOF_COLUMNS))
    AddHandler newButton.MouseDown, AddressOf Klik
    Return newButton
End Function

また、現在 9 つの行と列を作成しているため、1 つ少ない列と行を描画する必要があります。

For value1 As Integer = 0 To AMOUNTOF_ROWS - 1 Step 1
    For value2 As Integer = 0 To AMOUNTOF_COLUMNS -1 Step 1
        Me.setNew(value1, value2)
    Next
Next
于 2013-11-10T11:07:27.330 に答える