Avatar billede lajer Nybegynder
09. juli 2003 - 13:47 Der er 6 kommentarer og
1 løsning

Event bliver ikke kaldt

Hej.

Jeg har lavet en Control!

Det første jeg gør i denne er at lave en ny instans a Button

Button BtnForward = new Button();

Derefter sætter jeg en ny eventhandler på denne i OnInit

BtnForward.Click += new EventHandler( this.Redirect );

Hvorefter jeg Render denne Button i Render metoden.

BtnBack.RenderControl( aWriter );


Knappen kommer fint ud på siden, mit problem er dog at Redirect metoder ikke bliver kaldt når jeg klikker på knappen?

Hvad gør jeg galt?
Avatar billede simon.ulsnes Nybegynder
09. juli 2003 - 14:29 #1
Sæt eventhandleren i constructoren i stedet for en anden event...

- Simon
Avatar billede lajer Nybegynder
09. juli 2003 - 14:41 #2
Har jeg prøvet, det giver samme resultat = intet!
Avatar billede z42cool Nybegynder
10. juli 2003 - 16:13 #3
Det korrekte HTML kommer ud fordi du har kaldet til RenderControl, men da din dynamisk skabte kontrol ikke er en del af kontrol hierakiet, så består instansen ikke og eventet kan derfor ikke routes. Hvis du ønsker at lave composite kontroller, altså kontroller der består af andre kontroller bør du kun arve Control eller WebControl og så overskrive CreateChildren metoden hvor du så skaber dine kontroller og tilføjer dem til din parent kontrols Control collection, så behøves du ikke at tænke på hverken rendering eller routing af events!
Avatar billede lajer Nybegynder
11. juli 2003 - 09:29 #4
z2cool:

Jeg nedarver fra en klasse, der ingen nedarver fra Control. Så dette skulle være iorden.

Tilgengæld har jeg aldrig kigget på RenderChildren, kan jeg ikke logge dig til at give lidt ekstra specs herom.

Evt. ligge et code snip.
Avatar billede lajer Nybegynder
11. juli 2003 - 09:29 #5
ingen = igen

even :-)
Avatar billede z42cool Nybegynder
11. juli 2003 - 09:39 #6
Det er ikke godt nok at arve fra en klasse der arver Control, du bliver i langt de fleste tilfælde nødt til at arve direkte fra Control eller WebControl da du ingen garanti har for at den mellemste klasse ikke overskriver default renderingen eller event routingen.

public class MyControl : Control
{
    private void HandleButtonBack(object sender, EventArgs e)
    {
        //Do something
    }
   
    private void HandleButtonNext(object sender, EventArgs e)
    {
        //Do something
    }

    protected override void CreateChildControls(object sender, EventArgs e)
    {
        Button button = new Button();
        button.Text = "Back";
        button.Click += new EventHandler(HandleButtonBack);
        this.Controls.Add(button);

        button = new Button();
        button.Text = "Next";
        button.Click += new EventHandler(HandleButtonNext);
        this.Controls.Add(button);
    }
}
Avatar billede lajer Nybegynder
22. september 2003 - 16:28 #7
Uhm, det er vist ved at være lang tid at jeg rodede med det her spørgsmål. Er ikke aktuelt længere.
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
Kurser inden for grundlæggende programmering

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