如何使用动态创建的控件处理事件?

时间:2016-03-21 15:40:21

标签: .net vb.net event-handling

所以我们经常遇到这个问题,而且我没有看到对此的通用答案。

主要问题是: 我是以编程方式创建控件(如按钮),我想处理click事件,我该怎么做?

1 个答案:

答案 0 :(得分:0)

以下内容适用于放置在FlowLayOutPanel上的一个按钮,因此如果要添加许多按钮,流程面板会对此进行协助。

Dim b As New Button With
    {
        .Name = "Button1",
        .Text = "Press me",
        .Size = New Size(100, 100),
        .Location = New Point(25, 30),
        .Parent = FlowLayoutPanel1,
        .Visible = True
    }

AddHandler b.Click, Sub(s As Object, e As EventArgs)
                        Dim bnt = CType(s, Button)
                        If bmt.Name = "Button1" Then
                            MessageBox.Show(bnt.Text)
                        End If
                    End Sub

FlowLayoutPanel1.Controls.Add(b)

我所做的(并且愿意分享)是创建一个可以一次创建一个到多个按钮的类,但关键是集成从单击事件中点击哪个按钮,该事件归结为检查名称或者值动态创建的按钮或类似控件的标记。

注意事件的添加方式有一个缺点,如果您需要取消订阅该事件,如图所示它需要更多的努力,那么在这种情况下,如果需要订阅和取消订阅,Martin会表现得更好从事件。