gpt4 book ai didi

vb.net - 从 VB.NET 中的 List(Of T) 引发事件

转载 作者:行者123 更新时间:2023-12-03 00:30:14 25 4
gpt4 key购买 nike

我已经将一个大型 VB6 移植到 VB.NET 项目,虽然它可以正确编译,但我必须注释掉大多数事件处理程序,以避免 winform 对象没有数组集合,因此将将集合数组中的各种对象放入 List 对象中。

例如,在 VB6 中,您可以有一个按钮数组。在我的代码中我有

Dim WithEvents cmdButtons As New List(Of Button) 

(并且在 Load 事件中,传播列表)

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

在按钮创建代码中,事件名称在那里,但据我了解,处理程序不会拦截,因为代码的句柄部分不在那里(已注释掉)。

最佳答案

我不太确定您想要什么,但是如果您希望能够将事件处理程序添加到容器中的某些按钮,并在列表中引用这些按钮,您可以执行类似的操作

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

关于vb.net - 从 VB.NET 中的 List(Of T) 引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com