- общедоступными. Свойство Item задает входной аргумент события, передаваемый обработчику события. Булево свойство Permit задает выходной аргумент события, получающий в обработчике значение True, если обработчик события дает добро на изменение элемента. В модели, которую мы рассматриваем, предполагается, что обработчик события, получив уведомление об изменении элемента, анализирует ситуацию и может разрешить или не разрешить изменение, например, если значение элемента больше некоторого предельного значения. Правильно ли, что обработчик события, а не сам класс, создающий событие, принимает решение о допуске изменения элемента списка? Все зависит от контекста. В прошлые времена молодые могли объявить о своей помолвке, но требовалось разрешение родителей на брак. Времена изменились - теперь на брак родительского благословения не требуется. Но в программистском мире ситуации, требующие внешнего разрешения, встречаются довольно часто. | Рассмотрим теперь, как устроен в нашем примере класс, создающий события. Начнем со свойств класса: // Класс, создающий событие. Потомок класса ArrayList. public class ListWithChangedEvent: ArrayList { //Свойства класса: событие и его аргументы //Событие Changed, зажигаемое при всех изменениях //элементов списка. public event ChangedEventHandler Changed; //Аргументы события private ChangedEventArgs evargs = new ChangedEventArgs(); Первое свойство описывает событие Changed. Оно открыто, что позволяет присоединять к нему обработчиков событий. Второе закрытое свойство определяет аргументы события, передаваемые обработчикам. Хороший стиль требует задания в классе процедуры On |