Avatar billede lizardine Nybegynder
01. juni 2004 - 12:16 Der er 6 kommentarer og
1 løsning

Event håndtering i en webform

Hej

Jeg har lidt problemer med event håndtering i en webform. Jeg vil gerne i metoden, InitializeComponent, finde ud af hvilken event der affyres.

F.eks.

(Undskyld syntaxen)
private void InitializeComponent
{
    this.button1.click += new eventhandler(this.button1_event);
    this.button2.click += new eventhandler(this.button2_event);
    //Er det muligt at tjekke om det er button3 der har affyret eventet uden at skulle tjekke dette i metoden button3_event?
    this.button3.click += new eventhandler(this.button3_event);
    this.button4.click += new eventhandler(this.button4_event);
}

På forhånd tak
Avatar billede Lars Søndergaard Nybegynder
01. juni 2004 - 13:06 #1
du ved vel selv hvad der sker når du trykker på button3 og på den måde kan du se om det er den rigtige event ?

ellers skal du debugge for at se det :)
Avatar billede lizardine Nybegynder
01. juni 2004 - 14:04 #2
Det er jeg med på, men jeg vil gerne programatisk kunne se hvilken event der skal kaldes ;)
Avatar billede burningice Nybegynder
01. juni 2004 - 14:48 #3
lizardine>> det kan du jo også, ved at tjekke i din eventhandleren !?!?! hvis det er fordi, at du vil nøjes med en enkelt eventhandler til mange knapper, så kan du sagtens gøre det:

private void InitializeComponent
{
    this.button1.click += new eventhandler(this.button_event);
    this.button2.click += new eventhandler(this.button_event);
    //Er det muligt at tjekke om det er button3 der har affyret eventet uden at skulle tjekke dette i metoden button3_event?
    this.button3.click += new eventhandler(this.button_event);
    this.button4.click += new eventhandler(this.button_event);
}

void button_event(object sender, EventArgs e) {
    Button b = (Button)sender;

    Response.Write("Du trykkede på "+ b.Text);
}
Avatar billede lizardine Nybegynder
01. juni 2004 - 15:37 #4
cyberfessor >> Undskyld - jeg skulle have formuleret mig en smule bedre. Grunden til at jeg ønsker at tjekke hvilken event der skal kaldes, er at eventet ligger i en anden klasse. Klassen har ligeledes en række egenskaber som skal sættes, og det gør jeg i InitializeComponent. F.eks.

NyKlasse nk = new NuKlasse();

private void InitializeComponent
{
    NyKlasse.Navn = "Dette er et kald"
    this.button1.click += new eventhandler(NyKlasse.KaldEvent);

    NyKlasse.Navn = "Dette er et andet kald"
    this.button2.click += new eventhandler(NyKlasse.KaldEvent);

    NyKlasse.Navn = "Navn på et kald"
    this.button3.click += new eventhandler(NyKlasse.KaldEvent);

    NyKlasse.Navn = "La La La"
    this.button4.click += new eventhandler(NyKlasse.KaldEvent);
}

Problemet er at hvis jeg fyre button2 eventet af, får jeg det forkerte Navn med.
Avatar billede burningice Nybegynder
01. juni 2004 - 16:00 #5
hvis alle dine knapper fyrer samme eventhandler af, så kan du finde ud af hvilken knap der blev trykket af i sender-objectet.

Hvis det er fordi at du vil sætte en property i klassen inden eventen fyres af kan du gøre det sådan her:


private void InitializeComponent
{
    NyKlasse.Navn = "Dette er et kald"
    this.button1.click += new eventhandler(button1_click);
}

void button1_click(object sender, EventArgs e) {
  NyKlasse.Navn = "Dette er et kald";
  NyKlasse.OnKaldEvent(sender, e);
}

umiddelbart virker det som noget værre rod du har gang i... tror du skal forklare lidt bedre hvad du VIL med det, hvad det skal ENDE UD MED.
Avatar billede lizardine Nybegynder
01. juni 2004 - 16:08 #6
cyberfessor >> I min applikation har jeg en række generelle metoder jeg benytter i forbindelse med events på mine kontroller. I stedet for at jeg har de samme event kontroller liggende i alle mine webforms, har jeg valgt at lægge de generelle metoder i en klasse for sig, som jeg så kan kalde i forbindelse med de forskellige kontrolevents.
Avatar billede burningice Nybegynder
01. juni 2004 - 16:29 #7
og hvad er problemet med at du har en generel eventhandler som alle dine knapper kalder?
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