Avatar billede hulla Novice
25. oktober 2011 - 14:47 Der er 5 kommentarer og
1 løsning

Events i winform

Hej

Jeg har et problem med events, sikkert mest fordi jeg ikke helt forstår dem endnu.

Jeg har to projekter (to forskellige namespaces) hvor jeg har en kontrol fra Proj2 indlejret i en kontrol i MainProj.
I den indlejrede kontrol har jeg en eventhandler:

private void Load_End(object sender, EventArgs e)
{

}


Nu vil jeg gerne i min MainProj modtage et kald hver gang jeg kommer ind i Load_End.
jeg har prøvet forskelligt med delegates og public events, men uden held.

Nogen der kan guide mig på vej?
Avatar billede kalp Novice
25. oktober 2011 - 15:08 #1
sådan ca. (du skal binde til OnLoad)

public event LoadEvent OnLoad;
private void Load_End(object sender, EventArgs e)
{
    On_Load_Event(e);
}
protected virtual void On_Load_Event(EventArgs e)
{
  if (OnLoad != null) OnLoad(this, e);
}
Avatar billede hulla Novice
25. oktober 2011 - 22:46 #2
Hmmm ser måske rigtigt ud.

Hvad skal være i Proj2 og hvad skal være i MainProj?
Avatar billede kalp Novice
25. oktober 2011 - 23:23 #3
alt det kode du ser i mit første indlæg skal være i MainProj.

og i Proj2 skal du have en reference til MainProj..

resten klare intelli sense jo for dig.

DinMainProjRef.OnLoad += dinEventHandlerKode;

når du har skrevet "+=" skal du bare trykke på TAB 2 gange.. så opretter den sådan set koden for dig.
Avatar billede hulla Novice
26. oktober 2011 - 07:13 #4
Ja, så har du misforstået det lidt.

I min indlejrede kontrol har jeg en event handler, den afvikles igennem et skannerprogram, så det kan jeg ikke ændre på.

Det er FRA denne eventhander (Load_End) jeg gerne vil "gøre noget så min MainProj bliver opmærksom på det"

Min MainProj har i forvejen reference til Proj2 for at kunne indlejre kontrollen.
Avatar billede hulla Novice
26. oktober 2011 - 10:10 #5
Jeg har fundet en løsning.

Jeg gør sådan i min event handler (Load_End) i Proj2:

PageEnd(args);

Det er en eventhandler i Proj2 som min MainProj "abonnerer" på sådan her:
Proj2.PageEnd += new PageEndEventHandler(OnPageEnd);

Det virker :-)
Avatar billede kalp Novice
26. oktober 2011 - 10:10 #6
ja men så flytter du jo bare på koden.. giver vel sig selv;)

så den kode i mit første indlæg skal over i dit proj2 og fra mainproj gør du det jeg skriv i mit indlæg nr. 3.

når du har indsat koden i mit første indlæg så kan der bindes på OnLoad eventet ligesom du ville binde til et hvert andet event i de indbyggede kontroller.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester