Vb.net 单击动态添加的按钮时如何执行操作
我需要在代码中,在运行时动态创建一个新按钮,并将其添加到表单中。当我点击“新建”按钮时,我需要它做一些事情。对于我在设计时在表单上绘制的普通按钮,我只需执行以下操作:Vb.net 单击动态添加的按钮时如何执行操作,vb.net,winforms,Vb.net,Winforms,我需要在代码中,在运行时动态创建一个新按钮,并将其添加到表单中。当我点击“新建”按钮时,我需要它做一些事情。对于我在设计时在表单上绘制的普通按钮,我只需执行以下操作: Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Process.Start("") End Sub Private Sub MyClickHandler(sender As Object, e As
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Process.Start("")
End Sub
Private Sub MyClickHandler(sender As Object, e As EventArgs)
' ...
End Sub
AddHandler myButton.Click, AddressOf MyClickHandler
RemoveHandler myButton.Click, AddressOf MyClickHandler
但是,在这种情况下,当我从另一个按钮的单击事件中创建一个新按钮时,我不知道如何在它被单击时为它分配功能。创建新控件时,需要将它添加到表单的
控件
集合(或表单上的一个容器控件)。例如:
Dim myButton As New Button()
Me.Controls.Add(myButton)
但是,要捕获和处理click事件,需要声明和事件处理程序方法,然后使用AddHandler
关键字将其连接起来。例如,如果您有这样一种方法:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Process.Start("")
End Sub
Private Sub MyClickHandler(sender As Object, e As EventArgs)
' ...
End Sub
AddHandler myButton.Click, AddressOf MyClickHandler
RemoveHandler myButton.Click, AddressOf MyClickHandler
然后,您可以将其添加为按钮的单击事件的处理程序,如下所示:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Process.Start("")
End Sub
Private Sub MyClickHandler(sender As Object, e As EventArgs)
' ...
End Sub
AddHandler myButton.Click, AddressOf MyClickHandler
RemoveHandler myButton.Click, AddressOf MyClickHandler
但是,无论何时执行此操作,都应该确保在不再需要处理程序时从事件中删除该处理程序,如下所示:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Process.Start("")
End Sub
Private Sub MyClickHandler(sender As Object, e As EventArgs)
' ...
End Sub
AddHandler myButton.Click, AddressOf MyClickHandler
RemoveHandler myButton.Click, AddressOf MyClickHandler
VB.NET还提供了方便的with events
关键字,根据您的需要,该关键字可能更易于使用。问题不是很清楚,但我认为您正在寻找,例如AddHandler按钮4。单击,Sub(s,e)Process.Start(“”)
。我已更新了问题,以修复标记,并使您的问题更加明确。然而,由于很难说出你真正的要求,我不得不做出一些假设。如果我以任何方式曲解了你的实际问题,请修改我的编辑。是的,很抱歉我的英语不好。AddHandler正在工作,但它不是永久的。当我创建一个新按钮时,我希望比我重新启动程序时,按钮仍然存在。那可能吗?是的。最简单的方法是将其作为设置/配置存储在文件中,然后每次程序启动时,它都可以加载设置并根据需要动态创建按钮。哇,这是最简单的方法哈哈。按下按钮时,不能仅在代码中添加文本?:/