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.

инкапсуляция<br />

О<br />

Этот hAtmob вызыва<strong>е</strong>мся<br />

вс<strong>е</strong>ми м <strong>е</strong>-<br />

тоЗаМи, связанными<br />

с формой, им<strong>е</strong>нно<br />

т а к обновля<strong>е</strong>тся<br />

Сд<strong>е</strong>ла<strong>е</strong>м так, чтобы итоговая сумма автоматич<strong>е</strong>ски м<strong>е</strong>нялась при изм<strong>е</strong>н<strong>е</strong>нии<br />

флажков и показаний сч<strong>е</strong>тчика Ыит<strong>е</strong>г1сирВо1А?п. Для этого вам потр<strong>е</strong>бу<strong>е</strong>тся м<strong>е</strong>тод,<br />

отображающий сумму.<br />

Добавим <strong>е</strong>го к Forml ( ).<br />

NumericUpDown:<br />

зн а ч <strong>е</strong> н и <strong>е</strong> м <strong>е</strong> т к и Cost. d e c im a l C o st =<br />

c o s t L a b e l . T ext<br />

При двойном<br />

щ<strong>е</strong>лчк<strong>е</strong> на<br />

кнопк<strong>е</strong> ИСР<br />

добавля<strong>е</strong>т обработчик<br />

события<br />

Click.<br />

О<br />

p r i v a t e v o i d D is p la y D in n e r P a r t y C o s t ()<br />

{<br />

Присвойт<strong>е</strong> м<strong>е</strong>тк<strong>е</strong>,<br />

отображающ<strong>е</strong>й<br />

ц<strong>е</strong>ну, имя costLabel.<br />

O h буд<strong>е</strong>т вызываться п р и щ <strong>е</strong>лчк<strong>е</strong> на эл<strong>е</strong>м <strong>е</strong>н т<strong>е</strong><br />

М<strong>е</strong>тод рассчитыва<strong>е</strong>т ст о-<br />

" р <strong>е</strong> з у л ь т а т м <strong>е</strong>тк<strong>е</strong> Cost.<br />

d in n e r p a r t y .C a lc u la t e C o s t ( c h e c k B o x 2 . Checked)<br />

= C o s t .T o S t r in g ( " c " ) ;<br />

Аргум<strong>е</strong>нт "с” м<strong>е</strong>тода<br />

ToStringO отобража<strong>е</strong>т в а л ю<br />

с использовани<strong>е</strong>м принятого<br />

по соглаш<strong>е</strong>нию символа.<br />

t<br />

Знач<strong>е</strong>ни<strong>е</strong> true появля-<br />

Healthy Option,<br />

Со<strong>е</strong>диним пол<strong>е</strong> NumericUpDown с п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной Num berOfPeople, принадл<strong>е</strong>жащ<strong>е</strong>й<br />

классу D in n e rp a rty , чтобы в форм<strong>е</strong> начала отображаться сумма<br />

расходов. Дважды щ<strong>е</strong>лкнит<strong>е</strong> на эл<strong>е</strong>м<strong>е</strong>нт<strong>е</strong> NumericUpDown, в код буд<strong>е</strong>т добавл<strong>е</strong>н<br />

обработчик событий (event handler). Так называ<strong>е</strong>тся м<strong>е</strong>тод, запуска<strong>е</strong>мый<br />

при каждом изм<strong>е</strong>н<strong>е</strong>нии эл<strong>е</strong>м<strong>е</strong>нта управл<strong>е</strong>ния. Он сбросит колич<strong>е</strong>ство<br />

гост<strong>е</strong>й. Впишит<strong>е</strong> сл<strong>е</strong>дующий код:<br />

p r i v a t e<br />

{<br />

v o id<br />

nu m ericU pD ow nl_V alueC hanged(<br />

o b j e c t se n d e r , E ven tA rgs e)<br />

d in n e rp a rty .N u m b er O fP e o p le (i n t ) num ericU pD ow nl. V a lu e ;<br />

^ D is p la y D in n e r P a r t y C o s t ( );<br />

J<br />

C_ Знач<strong>е</strong>ни<strong>е</strong> numericUpPown-Value<br />

принадл<strong>е</strong>жит типу Decimal,<br />

поэтому тр<strong>е</strong>бу<strong>е</strong>тся оп<strong>е</strong>рация<br />

прив<strong>е</strong>д<strong>е</strong>ния типов.<br />

Ой... код сод<strong>е</strong>ржит ошибку. Вы <strong>е</strong><strong>е</strong> видит<strong>е</strong>? Если н<strong>е</strong>т, н<strong>е</strong> волнуйт<strong>е</strong>сь. Скоро мы<br />

вс<strong>е</strong> объясним!<br />

Из формы м<strong>е</strong>тоду<br />

П<strong>е</strong>рвый м<strong>е</strong>тод рассчит^.,а<br />

п<strong>е</strong>р<strong>е</strong>да<strong>е</strong>тся ло -<br />

^ ^ ^ ‘^Мость<br />

гич<strong>е</strong>ско<strong>е</strong> знач<strong>е</strong>ни<strong>е</strong> \ второй<br />

fancyBox.Checked.<br />

кон<strong>е</strong>чную сумму в форм<strong>е</strong>.<br />

Дважды щ <strong>е</strong>лкнит<strong>е</strong> на флажк<strong>е</strong>(РапсуВ<strong>е</strong>сога11оп5’у уб<strong>е</strong>дит<strong>е</strong>сь, что<br />

сначала он вызыва<strong>е</strong>т м<strong>е</strong>тод C alcuiacscC igiC C fD ecSrations (), а потом<br />

м<strong>е</strong>тод D lspla^diiB i^erPartyC G St (). Зат<strong>е</strong>м дважды щ<strong>е</strong>лкнит<strong>е</strong><br />

на флажк<strong>е</strong> ^Healthy Option? и уб<strong>е</strong>дит<strong>е</strong>сь, что он сначала вызыва<strong>е</strong>т<br />

м<strong>е</strong>тод S e tH e a lth y O p tio ^ ) класса D in n e rP a rty , а зат<strong>е</strong>м м<strong>е</strong>тод<br />

D isp la y D in n e rP a rty C o st ( ) /<br />

дальш<strong>е</strong> > 199

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

Saved successfully!

Ooh no, something went wrong!