0

VB.net について質問があります。このコードでは、(for ループによる) 64 個のボタンの作成があります。Klik メソッドで zetnieuw で作成されたボタンに座標でアクセスするにはどうすればよいですか? なぜなら、基本的にzetnieuw機能はボタンを作るだけだからです。

Public Class Form1
Dim AANTAL_KOLOMMEN As Integer = 8
Dim AANTAL_RIJEN As Integer = 8
Dim Button1 As Button
Dim tel As Boolean
Dim value1 As Integer
Dim value2 As Integer




Public Function zetNieuw(rij As Integer, kolom As Integer) As Button
    Dim nieuweKnop As New Button()
    nieuweKnop.Width = 40
    Me.Controls.Add(nieuweKnop)
    nieuweKnop.Left = kolom * nieuweKnop.Width
    nieuweKnop.Top = rij * nieuweKnop.Width
    nieuweKnop.Height = nieuweKnop.Width
    nieuweKnop.Text = ""
    AddHandler nieuweKnop.MouseDown, AddressOf Klik
    ...
    nieuweKnop.Tag = (kolom + (rij * AANTAL_KOLOMMEN))
    Return nieuweKnop


End Function


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    For Me.value1 = 1 To AANTAL_KOLOMMEN Step 1
        For Me.value2 = 1 To AANTAL_RIJEN Step 1
            Me.zetNieuw(value2, value1)
        Next
    Next
End Sub
Private Sub Klik(sender As Object, e As MouseEventArgs)
    Dim knop As Button = sender
    ...
End Sub
4

2 に答える 2

0

zetNieuw でボタンを作成する場合、ボタンの Name プロパティを行と列を含む値に設定できます。

nieuweKnop.Name = "btn_" & rij & "_" & kolom

同じ規則に従えば、ボタンの名前を使用して、後で行と列で特定のボタンを見つけることができます。また、特定のボタンがある場合は、Name プロパティで行と列を決定できます。

Dim parts = btn.Name.Split("_"C)
Dim row = Integer.Parse(parts(1))
Dim col = Integer.Parse(parts(2))

後者 (ボタン オブジェクトに基づいて行と列を取得する) のみの場合は、zetNieuw で既に設定した Tag プロパティを分析します。

于 2013-11-12T12:05:50.520 に答える
0

このようなものが機能するはずです。配列を次のように宣言します

Dim myButtons(AANTAL_KOLOMMEN - 1, AANTAL_RIJEN - 1) As Button

次のように入力します。配列は .Net ではゼロベースであることに注意してください。

For Me.value1 = 0 To AANTAL_KOLOMMEN - 1 Step 1
    For Me.value2 = 0 To AANTAL_RIJEN - 1 Step 1
        myButtons(value2, value1) = Me.zetNieuw(value2, value1)
    Next
Next
于 2013-11-12T12:35:46.263 に答える