14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем 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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!