Advertisement
Guest User

Untitled

a guest
Mar 4th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. Public Class EquipmentCollection
  2. {
  3. Public Property EquipmentList As List(Of Equipment)
  4. }
  5.  
  6. Public Class Equipment
  7. {
  8. Public Event CalculateFired
  9.  
  10. Public Sub Calculate
  11. RaiseEvent CalculateFired
  12. End Sub
  13. }
  14.  
  15. Public Class Form1
  16.  
  17. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  18. Dim ec As New EquipmentCollection
  19. Dim eq As New Equipment
  20. Dim el As New List(Of Equipment)
  21.  
  22. eq = New Equipment
  23. el.Add(eq)
  24. eq = New Equipment
  25. el.Add(eq)
  26. eq = New Equipment
  27. el.Add(eq)
  28. eq = New Equipment
  29. el.Add(eq)
  30. eq = New Equipment
  31. el.Add(eq)
  32. eq = New Equipment
  33. el.Add(eq)
  34. eq = New Equipment
  35. el.Add(eq)
  36.  
  37. ec.EquipmentList = el
  38.  
  39. ec.EquipmentList.Item(2).Calculate()
  40. End Sub
  41. End Class
  42.  
  43. Public Class EquipmentCollection
  44. Private WithEvents _EquipmentList As New List(Of Equipment)
  45.  
  46. Public Property EquipmentList As List(Of Equipment)
  47. Get
  48. Return _EquipmentList
  49. End Get
  50. Set(value As List(Of Equipment))
  51. Dim counter As Integer
  52.  
  53. _EquipmentList = value
  54.  
  55. For counter = 0 To _EquipmentList.Count - 1
  56. AddHandler _EquipmentList.Item(counter).CalculateFired, AddressOf HandleCalculateFired
  57. Next
  58. End Set
  59. End Property
  60.  
  61. Private Sub HandleCalculateFired()
  62. MsgBox("calc was fired")
  63. End Sub
  64. End Class
  65.  
  66.  
  67. Public Class Equipment
  68. Public Event CalculateFired()
  69.  
  70. Public Sub Calculate()
  71. RaiseEvent CalculateFired()
  72. End Sub
  73. End Class
  74.  
  75. Public Class Equipment
  76. Implements INotifyPropertyChanged
  77.  
  78. Public Event PropertyChanged(ByVal sender As Object, _
  79. ByVal e As PropertyChangedEventArgs) _
  80. Implements INotifyPropertyChanged.PropertyChanged
  81.  
  82. Private _Calculation As Decimal
  83.  
  84. Public Sub Calculate(ByVal newNumber As Decimal)
  85. Me.Calculation = newNumber
  86. End Sub
  87.  
  88. Property Calculation() As Decimal
  89. Get
  90. Return _Calculation
  91. End Get
  92. Set(ByVal value As Decimal)
  93. If value <> _Calculation Then
  94. _Calculation = value
  95. RaiseEvent PropertyChanged(Me, _
  96. New PropertyChangedEventArgs("Calculation"))
  97. End If
  98. End Set
  99. End Property
  100. End Class
  101.  
  102. Public Class EquipmentCollection
  103. Private WithEvents _EquipmentList As New BindingList(Of Equipment)
  104.  
  105. Public ReadOnly Property EquipmentList() As BindingList(Of Equipment)
  106. Get
  107. Return _EquipmentList
  108. End Get
  109. End Property
  110.  
  111. Private Sub EquipmentList_ListChanged(ByVal sender As Object, _
  112. ByVal e As ListChangedEventArgs) _
  113. Handles _EquipmentList.ListChanged
  114. If e.ListChangedType = ListChangedType.ItemChanged Then
  115. If e.PropertyDescriptor IsNot Nothing AndAlso _
  116. e.PropertyDescriptor.Name = "Calculation" Then
  117. MessageBox.Show("New Calculation = " & _
  118. _EquipmentList.Item(e.NewIndex).Calculation.ToString)
  119. End If
  120. End If
  121. End Sub
  122. End Class
  123.  
  124. Dim ec As New EquipmentCollection
  125. ec.EquipmentList.Add(New Equipment)
  126. ec.EquipmentList.Add(New Equipment)
  127. ec.EquipmentList.Last.Calculate(110.5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement