Иллюстрированный самоучитель по Visual Basic .NET

Все вместе

Чтобы пример стал более интересным, вместо простого вывода в консольное окно мы включим в процедуру события команду вызова диалогового окна:

Public Sub anEmployee_SalarySecurityEvent(ByVal Sender As
Event_Handling_I.EmployeeWithEvents. ByVal e As System.EventArgs)
Handles anEmployee.SalarySecurityEvent
MsgBox(Sender.TheName &"had an improper salary raise attempted!")
End Sub

От приемника событий мы переходим к источнику. В класс Employee из главы 4 необходимо внести два изменения:

Public Class EmployeeWithEvents
Private m_Name As String
Private m_Salary As Decimal
Private Const LIMIT As Decimal =0.1D
Public Event SalarySecurityEventCByVal Sender As
EmployeeWithEvents,ByVal e As EventArgs)
Public Sub NewCByVal
aName As String. ByVal curSalary As Decimal)
m_Name = aName
m_Salary = curSalary
End Sub Readonly Property TheName() As String
Get
Return m_Name
End Get
End Property Readonly Property Salary() As Decimal s,
Get
Return m_Salary
End Get ' '
End Property
Public Overloads Sub RaiseSalary(ByVal Percent As Decimal)
If Percent > LIMIT'Then
' Операция запрещена – необходим пароль
RaiseEvent SalarySecurityEventtMe, New System.EventArgs())
Else
m_Sa1ary = (1 + Percent) * m_Salary
End If
End Sub
Public Overloads Sub RaiseSalary(ByVal Percent As Decimal.
ByVal Password As String)
If Password = "special" Then
m_Salary = (1 + Percent) * m_Salary
End If
End Sub
End Class

Первый выделенный фрагмент объявляет событие, а второй инициирует его при попытке недопустимого повышения зарплаты.

Примерный результат запуска программы показан на рис. 6.4. При нажатии кнопки ОК окно сообщения исчезает, и в консольном окне выводится строка, из которой видно, что зарплата Тома не изменилась.

Примечание
Переменные WithEvents потребляют системные ресурсы. Как только такая перемен-ная становится ненужной, присвойте ей Nothing
.

Иллюстрированный самоучитель по Visual Basic .NET › Обработка событий и делегаты › Все вместе
Рис. 6.4. Окно сообщения, вызываемое при обработке события

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.