Net framework 5, а также среды Visual Studio 2012 и C#


Разработка.типа,.поддерживающего.событие рис. 11.1



Download 6,27 Mb.
Pdf ko'rish
bet204/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   200   201   202   203   204   205   206   207   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

287
Разработка.типа,.поддерживающего.событие
рис. 11.1.
.Архитектура.приложения,.в.котором.используются.события
При инициализации приложения создается экземпляр объекта 
MailManager

поддерживающего событие 
NewMail
. Во время создания объекты 
Fax
и 
Pager
ре-
гистрируются в качестве получателей уведомлений о событии 
NewMail
(приход 
нового сообщения) объекта 
MailManager
, в результате 
MailManager
«знает», что 
эти объекты следует уведомить о появлении нового сообщения. Если в дальнейшем 
MailManager
получит новое сообщение, это приведет к вызову события 
NewMail

позволяющего всем зарегистрировавшимся объектам выполнить требуемую об-
работку нового сообщения.
разработка типа, 
поддерживающего событие
Для создания типа, поддерживающего одно или более событий, разработчик должен 
выполнить ряд действий. Все эти действия будут описаны ниже. Наше приложение 
MailManager
(его можно загрузить в разделе Books сайта 
http://wintellect com
) со-
держит весь необходимый код типов 
MailManager

Fax
и 
Pager
. Как вы заметите, 
типы 
Fax
и 
Pager
практически идентичны.


288
Глава.11 .События
Этап 1. Определение типа для хранения 
всей дополнительной информации, 
передаваемой получателям 
уведомления о событии
При возникновении события объект, в котором оно возникло, должен передать до-
полнительную информацию объектам-получателям уведомления о событии. Для 
предоставления получателям эту информацию нужно инкапсулировать в собствен-
ный класс, содержащий набор закрытых полей и набор открытых неизменяемых 
(только для чтения) свойств. В соответствии с соглашением, классы, содержащие 
информацию о событиях, передаваемую обработчику события, должны наследовать 
от типа 
System.EventArgs
, а имя типа должно заканчиваться словом 
EventArgs

В этом примере у типа 
NewMailEventArgs
есть поля, идентифицирующие отправи-
теля сообщения (
m_from
), его получателя (
m_to
) и тему (
m_subject
).
// Этап 1. Определение типа для хранения информации,
// которая передается получателям уведомления о событии
internal class NewMailEventArgs : EventArgs {
private readonly String m_from, m_to, m_subject;
public NewMailEventArgs(String from, String to, String subject) {
m_from = from; m_to = to; m_subject = subject; 
}
public String From { get { return m_from; } }
public String To { get { return m_to; } }
public String Subject { get { return m_subject; } }
}
ПриМеЧание
Тип.EventArgs.определяется.в.библиотеке.классов. NET.Framework.Class.Library.(FCL).
и.выглядит.примерно.следующим.образом:
[ComVisible(true), Serializable]
public class EventArgs {
public static readonly EventArgs Empty = new EventArgs();
public EventArgs() { }
}
Как.видите,.в.этом.классе.нет.ничего.особенного .Он.просто.служит.базовым.типом,.
от.которого.можно.порождать.другие.типы .С.большинством.событий.не.передается.
дополнительной.информации .Например,.в.случае.уведомления.объектом.Button.
о.щелчке.на.кнопке,.само.обращение.к.методу.обратного.вызова.—.и.есть.вся.нуж-
ная.информация .Определяя.событие,.не.передающее.дополнительные.данные,.
можно.не.создавать.новый.объект.Event-Args,.достаточно.просто.воспользоваться.
свойством.EventArgs Empty 



Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   200   201   202   203   204   205   206   207   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish