Visual Basic - 处理列表中类的事件 [英] Visual Basic - Handle events for class within a list

查看:116
本文介绍了Visual Basic - 处理列表中类的事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

公共设备收藏
{
公共物业设备列表(设备)
}

公共类设备
{
公共事件CalculateFired

公共子计算
RaiseEvent CalculateFired
End Sub
}

如何处理EquipmentCollection类中的Equipment类的CalculateFired事件?



。 NET 3.5,VB

解决方案

这对我有用。

 公共类Form1 

私有子Form1_Load(发件人作为对象,作为EventArgs)处理MyBase.Load
Dim ec作为新的设备收藏
Dim eq作为新设备
Dim el作为新列表(设备)

eq =新设备
el.Add(eq)
eq =新设备
el.Add(eq)
eq =新设备
el.Add(eq)
eq =新设备
el.Add(eq)
eq =新设备
el.Add(eq)
eq =新设备
el.Add(eq)
eq =新设备
el.Add(eq)

ec.EquipmentList = el

ec.EquipmentList.Item(2).Calculate()
End Sub
结束类

公共类EquipmentCollection
私有WithEvents _EquipmentList作为新列表(设备)

公共属性设备列表作为列表(设备)
获取
返回_EquipmentList
结束获取
设置(值作为列表(设备))
Dim counter As Integer

_EquipmentList = value

对于counter = 0到_EquipmentList.Count - 1
AddHandler _EquipmentList.Item(counter).CalculateFired,AddressOf HandleCalculateFired
下一个
结束集
结束属性

Private Sub HandleCalculateFired()
MsgBox(calc was fired)
End Sub
结束类


公共类设备
公共事件CalculateFired()

Public Sub Calculate()
RaiseEvent CalculateFired()
End Sub
结束类


Public Class EquipmentCollection
{
Public Property EquipmentList As List(Of Equipment)
}

Public Class Equipment
{
 Public Event CalculateFired

 Public Sub Calculate
  RaiseEvent CalculateFired
 End Sub
}

How can I handle the CalculateFired event on the Equipment class within the EquipmentCollection class?

.NET 3.5, VB

解决方案

This worked for me.

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim ec As New EquipmentCollection
        Dim eq As New Equipment
        Dim el As New List(Of Equipment)

        eq = New Equipment
        el.Add(eq)
        eq = New Equipment
        el.Add(eq)
        eq = New Equipment
        el.Add(eq)
        eq = New Equipment
        el.Add(eq)
        eq = New Equipment
        el.Add(eq)
        eq = New Equipment
        el.Add(eq)
        eq = New Equipment
        el.Add(eq)

        ec.EquipmentList = el

        ec.EquipmentList.Item(2).Calculate()
    End Sub
End Class

Public Class EquipmentCollection
    Private WithEvents _EquipmentList As New List(Of Equipment)

    Public Property EquipmentList As List(Of Equipment)
        Get
            Return _EquipmentList
        End Get
        Set(value As List(Of Equipment))
            Dim counter As Integer

            _EquipmentList = value

            For counter = 0 To _EquipmentList.Count - 1
                AddHandler _EquipmentList.Item(counter).CalculateFired, AddressOf HandleCalculateFired
            Next
        End Set
    End Property

    Private Sub HandleCalculateFired()
        MsgBox("calc was fired")
    End Sub
End Class


Public Class Equipment
    Public Event CalculateFired()

    Public Sub Calculate()
        RaiseEvent CalculateFired()
    End Sub
End Class

这篇关于Visual Basic - 处理列表中类的事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆