14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

э л <strong>е</strong> м <strong>е</strong> н т ы у п р а в л <strong>е</strong> н и <strong>е</strong> и г р а ф и ч <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> н и я д о л ж н ы в ы с в о б о ж д а ть р <strong>е</strong>сурсы .<br />

Н о э л <strong>е</strong> м <strong>е</strong> н т B e e C o n tr o l с о зд а <strong>е</strong> т э к з <strong>е</strong> м п л я р э л <strong>е</strong> м <strong>е</strong> н т а T im e r ... к о ­<br />

т о р ы й о с т а <strong>е</strong> т с я н <strong>е</strong> уд а л <strong>е</strong>н н ы м ! К с ч а с ть ю , э ту п р о б л <strong>е</strong> м у л <strong>е</strong> г к о р <strong>е</strong> ­<br />

ш и т ь — д о с т а т о ч н о п <strong>е</strong> р <strong>е</strong> к р ы т ь м <strong>е</strong> то д D is p o s e {).<br />

О<br />

К л а с с эл<strong>е</strong>м<strong>е</strong>нтов у п р а в ­<br />

л<strong>е</strong>ния р<strong>е</strong>ализу<strong>е</strong>т инт <strong>е</strong>рф<strong>е</strong>йс<br />

IDisposable, поэт о­<br />

м у нужно просл<strong>е</strong>дить,<br />

чтобы вс<strong>е</strong> эл<strong>е</strong>м<strong>е</strong>нты<br />

удалялись, когда в них<br />

пропада<strong>е</strong>т надобность.<br />

П <strong>е</strong>р<strong>е</strong>кройт<strong>е</strong> м<strong>е</strong>тод bisposeO и удалит<strong>е</strong> тайм<strong>е</strong>р<br />

Н а ш кл а сс B e e C o n tr o l д о л ж <strong>е</strong> н о б л ад а ть у н а с л <strong>е</strong> д о в а н н ы м м <strong>е</strong> т о д о м D is p o s e ( ) . Д о с т а т о ч н о<br />

п <strong>е</strong> р <strong>е</strong> к р ы т ь и р а с ш и р и т ь э т о т м <strong>е</strong> то д . В в <strong>е</strong> д и т <strong>е</strong> в к о д кл а с с а к л ю ч <strong>е</strong> в о <strong>е</strong> слово o v e r r i d e :<br />

class BeeControl : PictureBox {<br />

o v e r r id e<br />

D1sfKee(booS disposing)<br />

r Dock {ge^ set;}<br />

DoybleBuffered {get; set;}<br />

i # Equals(object obj)<br />

^ Focused {get; }<br />

Font {get; set;}<br />

^ ForeCotor {ge^ set;}<br />

1% GetAccessibilityObjectByldOnt objectid)<br />

Посл<strong>е</strong> вв<strong>е</strong>д<strong>е</strong>ния ключ<strong>е</strong>вого<br />

слова override появит ся<br />

от о IntelliSense с «а<strong>е</strong>р<strong>е</strong>чк<br />

ю ы т и я м <strong>е</strong> т о д о в , в ы д <strong>е</strong> р и<br />

т <strong>е</strong> м <strong>е</strong>т од PisposeQ.<br />

И С Р в в <strong>е</strong> д <strong>е</strong> т с т р о ч к у b a s e . D is p o s e ( ) , к о т о р о й б уд<strong>е</strong>т вы зы в ать ся д а н н ы й м <strong>е</strong>то д :<br />

protected override void Dispose(bool disposing) {<br />

base.Dispose(disposing);<br />

}<br />

Код удал<strong>е</strong>ния тайм<strong>е</strong>ра<br />

Д о б а в ь т <strong>е</strong> в к о н <strong>е</strong> ц н о в о го м <strong>е</strong> т о д а D is p o s e () ко д , в ы зы в а ю щ и й м <strong>е</strong>­<br />

т о д a n im a tio n T im e r .D is p o s e О , к о гд а а р гу м <strong>е</strong> н т d i s p o s i n g и м <strong>е</strong> ­<br />

<strong>е</strong> т з н а ч <strong>е</strong> н и <strong>е</strong> tru e .<br />

protected override void Dispose(bool disposing) {<br />

base .Dispose (disposing) ; .<br />

^ Мы п<strong>е</strong>р<strong>е</strong>крыва<strong>е</strong>м n o-<br />

}<br />

i f (d is p o s in g ) {<br />

a n im a tio n T im e r .D isp o se О ;<br />

Т <strong>е</strong> п <strong>е</strong> р ь э л <strong>е</strong> м <strong>е</strong> н т B e e C o n tr o l у б и р а <strong>е</strong> т за с о б о й !<br />

м<strong>е</strong>ч<strong>е</strong>нный ключ<strong>е</strong>вым<br />

словом, protected м<strong>е</strong>тод<br />

DisposeQ, вызыва<strong>е</strong>мый<br />

р<strong>е</strong>ализаии<strong>е</strong>й м<strong>е</strong>тода<br />

IDisposable.DisposeQ эл<strong>е</strong>м<strong>е</strong>нта<br />

управл<strong>е</strong>ния.<br />

П р о в <strong>е</strong> р ь т <strong>е</strong> сам и . Добавьт<strong>е</strong> точку останова в в с т а в л <strong>е</strong> н н у ю с т р о ч к у<br />

и з а п у с т и т <strong>е</strong> п р о гр а м м у . П р и к а ж д о м у д а л <strong>е</strong> н и и э л <strong>е</strong> м <strong>е</strong> н т а B e e C o n tr o l<br />

и з к о л л <strong>е</strong> к ц и и C o n t r o l s буд<strong>е</strong>т вы зы в ать ся м <strong>е</strong> т о д D is p o s e ().<br />

Любой созданный<br />

вами<br />

эл<strong>е</strong>м<strong>е</strong>нт управл<strong>е</strong>ния<br />

долж<strong>е</strong>н<br />

удалять вс<strong>е</strong><br />

порожд<strong>е</strong>нны<strong>е</strong><br />

им эл<strong>е</strong>м<strong>е</strong>нты<br />

и други<strong>е</strong> допускаюпщ<strong>е</strong><br />

удал<strong>е</strong>ни<strong>е</strong><br />

объ<strong>е</strong>кты.<br />

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

прочитать мат<strong>е</strong>риалы с сайта ЬЦр://т5с1п.т1сг080Д.С0т/ги-ги/11Ьгагу/8У81<strong>е</strong>т.1а1вР05аЫ<strong>е</strong>.а15Р0$<strong>е</strong>.а50х<br />

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

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

Saved successfully!

Ooh no, something went wrong!