Ahm*_*med 1 vb.net delegates addressof visual-studio-2012
我在运行时使用以下代码添加按钮:
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
Run Code Online (Sandbox Code Playgroud)
代码工作正常,但Vb.net不允许我使用可变分配AddressOf子过程AddressOf btnName & "_Click"说AddressOf operand must be the name of method,问题是我不知道哪一个按钮将被创建,其过程是要打电话,我要分配AddressOf程序使用变量是否可能或我还有其他选择吗?
您可以(并且应该)为所有按钮使用相同的事件处理程序.
AddHandler myButtons.Click, AddressOf btn_Click
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式获取处理程序中的名称:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |