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

在VB.NET中从List(Of T)中引发事件,第1张

概述我已经将一个大的VB6移植到VB.NET项目,虽然它将正确编译,但我必须注释掉大多数事件处理程序,因为绕过没有winform对象的数组集合,所以把各种对象放到在集合数组中进入List对象. 例如,在VB6中,您可以拥有一组按钮.在我的代码中,我有 Dim WithEvents cmdButtons As New List(Of Button) (并在Load事件中传播List) 显然,您无法在容器 我已经将一个大的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 SubEnd Class
总结

以上是内存溢出为你收集整理的在VB.NET中从List(Of T)中引发事件全部内容,希望文章能够帮你解决在VB.NET中从List(Of T)中引发事件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1226023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存