Sunteți pe pagina 1din 25

Programarea Aplicaiilor

Windows curs 3

Conf. dr. Cristian CIUREA


Departamentul de Informatic i Cibernetic Economic
Academia de Studii Economice Bucureti
cristian.ciurea@ie.ase.ro

1
Agenda

1. Conceptul de delegate
2. Evenimente
3. Introducere n Windows Forms
4. Exemplificare aplicaie Windows

2
Delegate

Delegate este tipul asociat unui obiect


care ncapsuleaz o referin la o metod i
este echivalentul conceptului de pointer de
funcie n C++.

3
Delegate
DELEGATE:
un nou tip de referin n C#
delegate tip_return nume_referinta(lista
parametri);
public delegate void FireAlarmDelegate(object
sender, EventArgs e);

echivalent pointerului la funcie din C++


tip_return (*nume_pointer) (lista parametri);
faciliteaz definirea pointerilor la functii
nume_referinta pFunctie;
4
Delegate

Referina poate fi modificat dinamic,


delegatul permind apelul mai multor
implementri ale unor metode care au
acelai prototip.
private void btn1_Click(object sender, EventArgs e)
{
MessageBox.Show("S-a facut click pe buton!");
}

private void MetodaMea(object sender, EventArgs e)


{
MessageBox.Show("Click prin MetodaMea()");
} 5
Delegate

Delegatul permite legarea ntrziat (late


binding), adic amnarea precizrii
funciei de apelat pn la momentul
execuiei.
btn1.Click += new EventHandler(btn1_Click);

btn1.Click -= new EventHandler(btn1_Click);

btn1.Click += new EventHandler(MetodaMea);

6
Evenimente

O clas eveniment nglobeaz:


o instan de delegate, creia i se pune
n fa event;
public event FireAlarmDelegate FireAlarmEvent;

o funcie care activeaz delegatul, adic


apeleaz o list de funcii.
public void SunaAlarma(EventArgs e)
{
FireAlarmEvent(this, e);
}
7
Evenimente

EVENIMENT:
reprezint un vector/list de delegai
(pointeri de funcii)
event tip_delegate nume_event;
faciliteaz execuia tuturor funciilor printr-
un singur apel
nume_event([parametrii]);
suport operatorii aritmetici += i -=
pentru adugare/tergere de delegai din
eveniment
nume_event += new TipDelegate(metoda);
8
Evenimente

Fr folosirea delegatului, evenimentul ar fi


fost legat de o clas i de numele unei
singure metode pe care trebuie s o
apeleze.
Prin utilizarea delegatului, mai multe clase
pot subscrie la acelai eveniment i pot
folosi metode denumite diferit, deoarece
apelul lor se realizeaz prin
pointer/referin.

9
Evenimente

un eveniment reprezint un mesaj trimis de


un obiect pentru a anuna o aciune (user
interaction - mouse click, button click sau
program logic funcie din program).
n modelul de tratare a evenimentului din
.NET, obiectul care lanseaz evenimentul nu
tie ce obiect sau ce metod va primi i va
gestiona (handle); din acest motiv este
nevoie de un element intermediar ntre
surs i destinaie delegat (pointer la
funcie).
10
Evenimente

Pentru a lansa un eveniment este nevoie de


3 componente:
obiectul ce lanseaz event-ul;
tip delegat ce definete event-ul;
obiectul ce definete coninutul
mesajului.

11
Evenimente

12
Evenimente
Tratarea unui eveniment se poate face:
prin ataarea unei metode la delegatul
specific evenimentului:
MouseDown += new
MouseEventHandler(MetodaMea);

prin suprascrierea unei metode protected


motenit din clasa de baz:
protected override void
OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
//...
13
}
Evenimente

Pentru a oferi soluii personalizate de


tratare a evenimentului se definete o clas
de argumente derivat din EventArgs:

public class FireAlarmEventArgs : EventArgs


{ }

14
Evenimente

Funcia care activeaz delegatul devine:

public void SunaAlarma(FireAlarmEventArgs e)


{
FireAlarmEvent(this, e);
}

15
Evenimente
Metoda pentru abonare la eveniment din
clasa care ofer soluii pentru evenimentul
FireAlarm devine:
public void DoSomething(object sender,
FireAlarmEventArgs e)
{
if (e.risc < 5)
{
Console.WriteLine("Alarma incendiu
in camera " + e.camera + " Contactati telefonic
camera!" + "Posibil tigara aprinsa!");
}
else Console.WriteLine("Alarma incendiu in
camera " + e.camera + " Contactati departamentul
pompieri. " + "Evacuati cladirea!");
}

16
Introducere n Windows Forms

Sub biblioteca de clase Microsoft Foundation


Classes se ntlnesc aplicaii Windows cu
urmtoarele tipuri de vizualizri:
Forms (formular), specializat pentru
introducere date ntr-o machet;
TreeView (arborescent), specializat n
afiarea structurilor expandabile de date;
EditView (editare), specializat n lucrul cu
texte;
View (vizualizare generic), specializat n
reprezentri grafice.
17
Introducere n Windows Forms

Att formularul, ct i controalele aferente


au o serie de proprieti i evenimente.
Cele mai importante proprieti ale
obiectului Form sunt:
Name,
Text,
BackgroundImage,
BackColor,
Font.

18
Introducere n Windows Forms

Cele mai importante evenimente ale


obiectului Form sunt:
Load,
Paint,
MouseDown,
MouseUp,
MouseMove,
DragEnter,
DragDrop,
KeyPress.

19
Introducere n Windows Forms

Clasa Form, fiind derivat din


System.Windows.Forms.ContainerControl,
se comport ca un container care poate
susine diferite controale (TextBox, Label,
Button, etc.).

20
Introducere n Windows Forms

Pentru adugarea unui control pe formular:


declararea n clasa Form a unei referine:

private Button btn;

instanierea controlului:

btn = new Button();


btn.Text = "Click aici";
btn.Size = new Size(60,40);
btn.Location = new Point(80,100);
21
Introducere n Windows Forms

Pentru adugarea unui control pe formular:


adugarea controlului la colecia de
controale a formularului:

Controls.Add(btn);

ataare metode tratare evenimente:

btn.Click += new EventHandler(btn_Click);

22
Introducere n Windows Forms

Compilare linie de comand:

csc /t:winexe form1.cs

csc /t:winexe /r:System.dll


/r:System.Windows.Forms.dll
/r:System.Drawing.dll form1.cs

23
Introducere n Windows Forms

24
Bibliografie

[1] I. Smeureanu, M. Drdal, A. Reveiu Visual


C# .NET, Editura CISON, Bucureti, 2004.
[2] C. Petzold Programming Microsoft Windows
with C#, Microsoft Press, 2002.
[3] L. OBrien, B. Eckel Thinking in C#, Prentice
Hall.
[4] J. Richter Applied Microsoft .NET Framework
Programming, Microsoft Press, 2002.
[5] http://acs.ase.ro/paw

25

S-ar putea să vă placă și