【问题标题】:How to handle events with dynamically created controls? [duplicate]如何使用动态创建的控件处理事件? [复制]
【发布时间】:2016-03-21 15:40:20
【问题描述】:

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

主要问题是: 我正在以编程方式创建一个控件(如按钮)并且我想处理点击事件,我该怎么做?

【问题讨论】:

标签: .net vb.net event-handling


【解决方案1】:

以下是放置在 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 在这种情况下展示的内容会更好从事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2013-04-21
    • 2010-11-09
    相关资源
    最近更新 更多