. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
это сэкономит вам вр<strong>е</strong>мя<br />
Абтоматич<strong>е</strong>ско<strong>е</strong> создани<strong>е</strong> обработчиков событий<br />
Большинство программистов присваивают обработчикам событий им<strong>е</strong>на по одному и тому ж<strong>е</strong> принципу.<br />
Скаж<strong>е</strong>м, <strong>е</strong>сли объ<strong>е</strong>кт Ball вызыва<strong>е</strong>т событи<strong>е</strong> BalllnPlay, а п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нная, ссылающаяся на этот<br />
объ<strong>е</strong>кт, называ<strong>е</strong>тся ball, обработчику события присваива<strong>е</strong>тся имя ball_BallInPlay (). Соблюдать<br />
это правило н<strong>е</strong> обязат<strong>е</strong>льно, но сл<strong>е</strong>довани<strong>е</strong> <strong>е</strong>му обл<strong>е</strong>гча<strong>е</strong>т чт<strong>е</strong>ни<strong>е</strong> кода другими пользоват<strong>е</strong>лями.<br />
К счастью ИСР позволя<strong>е</strong>т б<strong>е</strong>з пробл<strong>е</strong>м сл<strong>е</strong>довать этому написанному<br />
правилу. В<strong>е</strong>дь она ум<strong>е</strong><strong>е</strong>т автоматич<strong>е</strong>ски добавлять обработчики событий.<br />
Вы уж<strong>е</strong> сталкивались с этой функци<strong>е</strong>й, но давайт<strong>е</strong> рассмотрим <strong>е</strong><strong>е</strong><br />
<strong>е</strong>щ<strong>е</strong> раз.<br />
^ У п р а ж н <strong>е</strong> н и <strong>е</strong> !<br />
Создайт<strong>е</strong> прилож<strong>е</strong>ни<strong>е</strong> Windows Form и добавьт<strong>е</strong> Ball и BallEventArgs<br />
Вот код для класса Ball:<br />
class Ball {<br />
}<br />
public event EventHandler BalllnPlay;<br />
public void OnBalllnPlay(BallEventArgs e) {<br />
EventHandler balllnPlay = BalllnPlay;<br />
if (balllnPlay != null)<br />
balllnPlay(this, e ) ;<br />
}<br />
A это класс BallEventArgs:<br />
class BallEventArgs : EventArgs {<br />
public int Trajectory { get; private set; }<br />
public int Distance { get; private set; }<br />
public BallEventArgs(int trajectory, int distance)<br />
this.Trajectory = trajectory;<br />
this.Distance = distance;<br />
}<br />
О Добавим конструктор для класса Pitcher<br />
Конструктор класса Pitcher буд<strong>е</strong>т сод<strong>е</strong>ржать одну строчку, добавляющую обработчик<br />
событий к ball.BalllnPlay. Начнит<strong>е</strong> вводить оп<strong>е</strong>ратор, но пока н<strong>е</strong> набирайт<strong>е</strong> +=.<br />
public Pitcher(Ball ball) {<br />
ball.BalllnPlay<br />
500 глава 11