[ deki_inf @ 27.05.2007. 09:17 ] @
Dakle imam sledeci kod:


public class Field
{
private Panel place;
................................

E sad bih hteo da napravim sledece:

private void field_MouseUp( object sender,System.Windows.Forms.MouseEventArgs e )
{
................................

Radim u 2005 C#!Za ovu klasu koja ima privatan podatak clan PANEL hocu da napravim EventHandler da kad se klikne da se nesto desi!
Kada se pravi za neku Formu,samo u properties dvoklik i imam gotovo i mogu da kucam kod!Onda mi on daje:
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp);
i jos za definisanje:
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
..............................
i ovde samo pisem kod!
Kako da napravim za svoju klasu neki hendler?!?!?!?!?!?!

Za tu klasu imam samo jedan fajl Field.cs i probao sam sa:
private MouseEventHandler field_MouseUp;

i da u fajlu Form1.cs stavim:
private void field_MouseUp( object sender,System.Windows.Forms.MouseEventArgs e )
{
.........................

ALI NECE!!!!!!!!!!!!!!!!!!!!!!!!
Sta treba da u deklaraciji u field.cs fajlu stavim kao argumente:private MouseEventHandler field_MouseUp=new MouseEventHandle(???????????)?Ili mozda nesto drugo treba da se uradi!!!

Ljudi pomagajte!!!!!!!!!!!!!!!!!

Hvala!!!!



[Ovu poruku je menjao deki_inf dana 27.05.2007. u 13:43 GMT+1]
[ Pharos @ 27.05.2007. 13:32 ] @
U konstruktoru svoje klase staviš
Code:

this.place.MouseClick += new System.Windows.Forms.MouseEventHandler(this.place_MouseClick);

I onda negde u klasi realizuješ sledeći event
Code:

private void place_MouseClick(object sender, MouseEventArgs e)
{

}
[ deki_inf @ 27.05.2007. 16:11 ] @

Hvala puno!!!!Da,tacno u konstruktoru moje klase je trebalo samo staviti :t
his.place.MouseUp += new System.Windows.Forms.MouseEventHandler(this.place_MouseUp);

Ovo u sustini pravi za privatan clan moje klase eventhandler sto i treba da uradi jer taj Panel ima tu funkciju!Bravo!!!Hvala!

Ali ostao mi je jedan problem a to je da funkciju public void place_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) moram da definisem u fajlu Form1.cs jer ona koristi neke elemente koji su vezani za Formu a ne za moju klasu!

Kako bi to moglio da se uradi?Mozda preko arugemanata tipa sender?!

Hvala unapred ))
I sa ovim zavrsavam ja se nadam...
Hvala veliko jos jednom
[ _v!rus_ @ 27.05.2007. 18:40 ] @
Implementiraj onda hendler u samoj formi Form1 a ne u klasi Field, ili prosledi formu klasi Field preko konstruktora, property-a ili sl.
[ deki_inf @ 27.05.2007. 20:59 ] @

Pokusao sam da implementiram hendler u Form1.cs ali on ne vidi!!!!

Dakle ovako:Imam fajle Form1.cs i fajl Field.cs i jos druge koji trenutno nisu bitni.

U Field.cs imam funkcije koje koriste samo podatke iz te klase (tipa get i set,konstruktor...) a u Form1.cs imam nekoliko objekata klase Field kao privatni podaci clanovi!Sada sam mislio da mogu samo da definisem funkciju :

public void field_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{......

u fajlu Form1.cs koja ce da radi sa tim,vec instanciranim objektima te klase Field jer se oni vide u tom fajlu a samim tim i u funkciji!Ali ne moze!U klase Field(u fajlu Field.cs) imam u konstruktoru ono sto je rekao Pharos ( this.place.MouseClick += new System.Windows.Forms.MouseEventHandler(this.place_MouseClick); ) ali ne mogu da tu funkciju definisem mimo tog fajla jer se ne vidi!!!Kada u tom fajlu (Field.cs) definisem ono radi ali ne znam kako da sad tamo vidim one privatne clanove Form1,instance klase Field!!!E to mi je problem ceo!!!
Ako to uradim,sve ostalo radi kako treba!

Hvala
[ Pharos @ 28.05.2007. 02:46 ] @
Pogledaj malo delegate i evente i kako se prave event driven aplikacije.
Nije to neka nauka, a dosta će ti pomoći. Ne daješ dovoljno informacija, pa je bzvz da ti pišem bilo kakve primere.