1

次のコードを使用して、実行時にフォームにボタンを追加しています。

Private Sub AddNewButton(ByVal btnName As String, ByVal btnText As String)
    Dim myButtons As New VIBlend.WinForms.Controls.vButton

    With myButtons
        .Size = New Size(200, 60)
        .Visible = True
        .Location = New Point(55, 33)
        .Text = btnText
        .Name = btnName
        .Font = New Font("Times New Roman", 12, FontStyle.Bold, GraphicsUnit.Point)
    End With

    AddHandler myButtons.Click, AddressOf btnName & "_Click"

    btnsPanel.Controls.Add(myButtons)

End Sub

AddressOf btnName & "_Click"コードは正常に動作しますが、Vb.netでは、変数を使用してサブ プロシージャに AddressOf を割り当てることはできませんAddressOf operand must be the name of method。問題は、どのボタンが作成され、どのプロシージャが呼び出されるかわからないことです。変数を使用した AddressOf プロシージャ それは可能ですか、それとも他に選択肢がありますか?

4

3 に答える 3

6

すべてのボタンに同じイベント ハンドラーを使用できます (使用する必要があります)。

AddHandler myButtons.Click, AddressOf btn_Click

次の方法で、ハンドラーで名前を取得できます。

Private Sub btn_Click(sender As Object, e As EventArgs)
    Dim button = DirectCast(sender, Button)
    Dim name As String = button.Name ' you can also use the Tag property
End Sub
于 2014-10-25T23:02:21.533 に答える