Avatar billede jpi Mester
06. januar 2007 - 16:32 Der er 4 kommentarer og
1 løsning

Tilføje knapper dynamisk

Jeg har brug for at kunne oprette et antal knapper dynamisk, der alle peger på samme funktion, men så man stadig ved hvilken knap man har trykket på.

Jeg har fundet spørgsmålet http://www.eksperten.dk/spm/366414 og jeg tror ar følgende kode er tilstrækkelig:

void Page_Load(object sender, EventArgs e) {
    for (i = 0; i < 10; i++) {
      Button b = new Button();

      b.Name = "Button"+ i;
      b.Text = "Knap nr. "+ i;
      b.Click += new System.EventHandler(DynamicButton_Click);

      this.Controls.Add(b);
    }
}

void DynamicButton_Click(object sender, EventArgs e) {
    Button b = (Button)sender;
   
    Response.Write("Du klikkede på "+ b.Name);
}

Jeg har dog forsøgt at lave det om til VB, men kan ikke få det til at virke, måske fordi jeg bruger .NET 2.0 ?

Er der bogen der kan få det til at virke med ASP.NET 2.0 VB
Avatar billede jakand Nybegynder
06. januar 2007 - 16:54 #1
Grunden til at de ikke virker i VB.net er sandsynligvis at events håndteres anderledes.

prøv at udskifte
b.Click += new System.EventHandler(DynamicButton_Click);
med dette:
AddHandler c.Click, AddressOf DynamicButton_Click
Avatar billede jpi Mester
06. januar 2007 - 17:14 #2
Nu bliver der lavet nogle knapper, men der sker intet når man trykker på dem.
Her er koden i VB:

                For i As Integer = 0 To 10
                    b = New Button()
                    b.ID = "Button" & i
                    b.Text = "Knap nr. " & i
                    AddHandler b.Click, AddressOf DynamicButton_Click

                    cell.Controls.Add(b)
                Next i

Protected Sub DynamicButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        MsgBox("Du klikkede på " & sender.ID)
End Sub

Mangler der noget med "handles" i definitionen af Protected Sub DynamicButton_Click ?
Jeg har prøvet st skrive "handles b.click", men uden held...
Avatar billede jpi Mester
06. januar 2007 - 17:19 #3
Ah... Glemte at lægge den øverste del af koden i pageInit i stedet for PageLoad. Nu ser det ud til at virke...
Avatar billede jakand Nybegynder
06. januar 2007 - 17:42 #4
Du kan ikke benytte Handles, da du jo først opretter knapperne i runtime.
Derfor bruges AddHandler istedet.

Godt at du fik det til at virke!
Avatar billede jpi Mester
06. januar 2007 - 19:12 #5
Jeps. Nu er der bare kommet et andet problem... Se http://www.eksperten.dk/spm/754351
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