Avatar billede Slettet bruger
28. april 2008 - 10:43 Der er 7 kommentarer og
1 løsning

Affyre event fra anden klasse

Hejsa..

Hvis jeg har en User class med et event i, hvordan kan jeg affyre det event fra en anden klasse uden at arve fra klassen?

class User
{
    public event ChatEventHandler OnMessageReceived;


}

class Main
{
    List<User> UserList = new List<User>();

    UserList[0].OnMessageReceived(null, null);

}
Avatar billede aaberg Nybegynder
28. april 2008 - 12:30 #1
class User
{
    public event ChatEventHandler MessageReceived;

    public virtual void OnMessageReceived(ChatEventArgs e)
    {
        if (MessageReceived != null)
            MessageReceived(this,e);
    }
}

class Main
{
    List<User> UserList = new List<User>();

    UserList[0].OnMessageReceived(null);

}
Avatar billede aaberg Nybegynder
28. april 2008 - 12:34 #2
Forklaring:

Jeg har omdøbt dit event til "MessageReceived". Så har jeg lavet en metode som hedder OnMessageReceived, som affyrer eventet. For at affyre eventet fra en anden klasse, kalder du metoden.

Denne metode er en "best practise" ifølge Microsoft. Det er sådan de aller fleste events i frameworket fungerer.
Avatar billede Slettet bruger
28. april 2008 - 12:45 #3
hmm, det ser da lidr mærkeligt ud fra brugeren side af User klassen er der så er en metode der hedder OnMessageReceived
Avatar billede aaberg Nybegynder
28. april 2008 - 13:42 #4
Det er sådan de fleste events i frameworket virker. Se f.eks. en Button, den har et "Click" event. For at affyrer "Click" eventet, skal du kalde OnClick metoden.

Det skal dog siges, at alle disse OnEtEllerAndet metoder er protected. Hvis du skal klikke en knap fra en anden klasse, kalder du PerformClick metoden. Så det er fuldt ud accepteret at kalde dine public metode noget mere logisk! Du kan f.eks. omdøbe OnMessageReceived metoden til ReceiveMessage(), og samtiddig gi din message med som parameter. Det vil nok virke mere logisk.
Avatar billede Slettet bruger
30. april 2008 - 11:44 #5
okay, tak, smid et svar
Avatar billede aaberg Nybegynder
30. april 2008 - 15:13 #6
svar
Avatar billede aaberg Nybegynder
19. juni 2008 - 21:58 #7
Jeg tror du har glemt at acceptere svaret! :-)
Avatar billede Slettet bruger
20. juni 2008 - 08:19 #8
Sådan :)
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