Module Module1
Private WithEvents aemp As part2
Sub Main()
Dim chen As New part2("chen lili", 20000)
aemp = chen
Console.WriteLine(chen.Name & " prevouis salary is " & chen.Salary)
aemp.AddSalary(0.3D)
Console.WriteLine(chen.Name & " current salary is " & chen.Salary)
aemp.AddSalary(0.3D, "hell")
Console.WriteLine(chen.Name & " now salary is " & chen.Salary)
Console.ReadLine()
End Sub
Public Sub aemp_AddSalaryEvent(ByVal sender As ConsoleApplication2.part2, ByVal e As invalidevent) Handles aemp.AddSalaryEvent
MsgBox(sender.Name & " want to add salary " & FormatPercent(e.percent) & ", can not be agree !" & " the reason is : " & e.message)
End Sub
Public Class invalidevent
Inherits System.EventArgs ' inherite system common event class
Private m_event As String ' save the reson of raising event
Private m_per As Decimal ' save the reason of raising event
Sub New(ByVal per As Decimal, ByVal info As String)
MyBase.New()
m_event = info
m_per = per
End Sub
ReadOnly Property message() As String
Get
Return m_event
End Get
End Property
ReadOnly Property percent() As Decimal
Get
Return m_per
End Get
End Property
End Class
Public Class part2
Private m_name As String
Private m_salary As Decimal
Private Const limitvalue As Decimal = 0.07
Public Event AddSalaryEvent(ByVal sender As part2, ByVal e As invalidevent) 'add declare event code here
Public Sub New(ByVal sname As String, ByVal salary As Decimal)
m_name = sname
m_salary = salary
End Sub
Public ReadOnly Property Name() As String
Get
Return m_name
End Get
End Property
Public ReadOnly Property Salary() As Decimal
Get
Return m_salary
End Get
End Property
Public Overridable Overloads Sub AddSalary(ByVal per As Decimal)
If per > limitvalue Then
RaiseEvent AddSalaryEvent(Me, New invalidevent(per, "no password to send!"))
Else
m_salary = m_salary * (1 + per)
End If
End Sub
Public Overridable Overloads Sub AddSalary(ByVal per As Decimal, ByVal pass As String)
If pass = "like" Then
m_salary = m_salary * (1 + per)
Else
RaiseEvent AddSalaryEvent(Me, New invalidevent(per, "password invalid !"))
End If
End Sub
End Class
End Module