Avatar billede timelord Nybegynder
13. oktober 2005 - 14:49 Der er 7 kommentarer og
1 løsning

Events trigged i en klasse

Hej Eksperter

Jeg har i mit program lavet en klasse som laver forbindelse til en digital vægt via RS232.

Når vægten har data trigger den en event:
WeightConnection.DataAvailable += new Sax.Communications.Connection.DataAvailableEventHandler(WeightConnection_DataAvailable);

public static void WeightConnection_DataAvailable(object sender, System.Eventargs e)
{
  Kode som skal skrive værdien fra vægten på mainformen.
}

Dette event vil jeg gerne kunne trigge i mit main program(mainForm), da jeg skal vise værdien fra vægten. Jeg vil gerne at jeg kan genbruge min vægt klasse i andre programmer, så der skal helst ikke være noget i vægt klassen som henviser til noget i min mainform.

Det er sikkert simpelt, men har altså ikke lige kunne greje det!

Jens
Avatar billede plx Nybegynder
13. oktober 2005 - 15:04 #1
Du kunne lave en delegate til den funktion, som står for udskrivningen. Den kan du så overføre i konstruktoren, når du instantierer et objekt af din klasse..
Avatar billede timelord Nybegynder
13. oktober 2005 - 15:19 #2
Ja det var en af de ting jeg faldt over i min desperate søgning, men kan ikke rigtig greje det. Har ikke arbejdet med delegate før.

Kan du give mig et simpelt eksempel?
Avatar billede plx Nybegynder
13. oktober 2005 - 15:31 #3
Din DataAvailableEventHandler er en delegate

class Program{
  private static void Udskriv(string msg){
    ...
  }

  public static void Main(){
    DinKlasse.Udskriv = new DinKlasse.UdskrivDelegate(Udskriv);
  }
}

class DinKlasse{
  public delegate void UdskrivDelegate(string msg);

  public static UdskrivDelegate Udskriv;

  public static void EnMetode(){
    Udskriv("tekst som skal udskrives);
  }

  ...
}
Avatar billede plx Nybegynder
13. oktober 2005 - 15:36 #4
Dvs DinKlasse.Udskriver kommer til at pege på Udskriv funktionen i main

Når DinKlasse internt kalder EnMetode (som faktisk burde være private), så vil den kalde Udskriv i Main
Avatar billede plx Nybegynder
13. oktober 2005 - 15:38 #5
Måske et lille fejlcheck

private static void EnMetode(){
    if(Udskriv != null) // undgå crash, hvis Udskriv ikke er initialiseret
        Udskriv("tekst som skal udskrives);
  }
Avatar billede timelord Nybegynder
14. oktober 2005 - 08:53 #6
Tak for det!

Det var lige det der skulle til, smid et svar og du vil få points.
Avatar billede timelord Nybegynder
21. oktober 2005 - 15:41 #7
Hvis du vil have dine points plx, så smid et svar!
Avatar billede timelord Nybegynder
27. oktober 2005 - 09:48 #8
Så er de points desværre væk!
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

IT-JOB