Avatar billede kornfreak Nybegynder
15. maj 2002 - 11:43 Der er 5 kommentarer og
1 løsning

Dynamisk'e knapper!

Jeg generer en liste med en masse knapper, jeg vil gerne kunne klikke på de knapper og kalde en function i codebehind med en parameter fra knappen, hvordan gør jeg det ?
Avatar billede snepnet Nybegynder
21. maj 2002 - 01:53 #1
Det er ikke så kringlet endda... nedenstående skulle virke fint.

//Opret en knap med en eller anden tekst
Button btn = new Button();
btn.Text="SomeText";
//Tilknyt handler... jeg har kaldt funktionen fncButtonHandler
btn+=new System.EventHandler(this.fncButtonHandler);
//lad knappen afsende et argument
btn.CommandArgument="SomeArgument";
//du skal så indsætte kontrollen (knappen) i formen på siden.
this.Controls[1].Controls.Add(btn);

Opret handlerfunktionen således:
private void fncButtonHandler(object sender, System.EventArgs e)
{
  //her kan du så gøre hvad du vil, og argumentet kan du hente sådan her:
  string btnArg=((Button) sender).CommandArgument.ToString();
}

Der er ingen problemer med at køre det der indsætter knappen i et loop, så du kan få alle de knapper ind på siden du vil.... argumentet kan så selvfølgelig tilpasses den enkelte knap.

Håber det hjalp.
Avatar billede kornfreak Nybegynder
22. maj 2002 - 11:40 #2
Lækkert, mange tak :)
Avatar billede qumle Nybegynder
30. april 2003 - 11:01 #3
min compiler brokker sig over din btn+=EventHandler.
kan man tilknytte en eventhandler på en anden måde f.eks med en metode
Avatar billede snepnet Nybegynder
01. maj 2003 - 18:00 #4
haha... bedre sent end aldrig :o)
du skal huske at det er += new System.EventHandler (du har refereret det uden "new"). Jeg er ikke sikker på hvad du mener med dit sidste spørgsmål.... Der er ikke rigtig andre muligheder end det jeg har skrevet til dig (du kan slå op i msdn under events og delegates, der er en del uddybende forklaringer).

Hvis du i designeren trækker en knap ind på en webform og dobbeltklikker på den, får du automatisk lavet det samme i din code-behind... du kan kigge i funktionen
private void InitializeComponent()

Der vil du kunne se præcis den samme kode som jeg har skrevet til dig.
Avatar billede qumle Nybegynder
02. maj 2003 - 10:43 #5
jo men mangler du ikke lige en .Click property på din knap:
btn.Click += new Eventhandler.....
Avatar billede snepnet Nybegynder
02. maj 2003 - 22:28 #6
lol... jo selvfølgelig, men det er nu ikke en property... det er et event.
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