加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在VB.NET中从List(Of T)中引发事件

发布时间:2020-12-17 07:15:10 所属栏目:百科 来源:网络整理
导读:我已经将一个大的VB6移植到VB.NET项目,虽然它将正确编译,但我必须注释掉大多数事件处理程序,因为绕过没有winform对象的数组集合,所以把各种对象放到在集合数组中进入List对象. 例如,在VB6中,您可以拥有一组按钮.在我的代码中,我有 Dim WithEvents cmdButtons
我已经将一个大的VB6移植到VB.NET项目,虽然它将正确编译,但我必须注释掉大多数事件处理程序,因为绕过没有winform对象的数组集合,所以把各种对象放到在集合数组中进入List对象.

例如,在VB6中,您可以拥有一组按钮.在我的代码中,我有

Dim WithEvents cmdButtons As New List(Of Button)

(并在Load事件中传播List)

显然,您无法在容器上触发事件.是否有办法从容器的内容(具有不同的名称)中触发事件?

在Button创建代码中,事件名称就在那里,但据我所知,处理程序不会拦截,因为Handles部分代码不存在(注释掉).

解决方法

我不确定你在追求什么,但是如果你想能够将事件处理程序添加到容器中的某些按钮并且还在列表中引用这些按钮,你可以做类似的事情.

Public Class Form1

    Dim myButtons As List(Of Button)

    Private Sub AddButtonsToList(targetContainer As Control)
        myButtons = New List(Of Button)

        For Each c In targetContainer.Controls
            If TypeOf c Is Button Then
                Dim bn = DirectCast(c,Button)
                AddHandler bn.Click,AddressOf SomeButton_Click
                myButtons.Add(bn)
            End If
        Next
    End Sub

    Private Sub SomeButton_Click(sender As Object,e As EventArgs)
        Dim bn = DirectCast(sender,Button)
        MsgBox("You clicked " & bn.Name)
    End Sub

    Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
        ' GroupBox1 has some Buttons in it
        AddButtonsToList(GroupBox1)
    End Sub

End Class

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读