Avatar billede hygta Nybegynder
02. april 2007 - 10:36 Der er 5 kommentarer og
1 løsning

Function som input, i en function

Jeg er ved at lege med en usercontrol, der har en knap. Den knap vil jeg gerne have til at gøre noget forskelligt, alt efter hvor jeg bruger min usercontrol.

Min ide er at sende en function med ind som parameter i en anden function. Hvis det kan lade sig gøre.

Noget i stil med:

public void F1(){

  //Udskriv noget til en tekstbox
}
public void F2(function functionNavn){
  Run functionNavn();

}

F2(F1)

Jeg mener jeg har hørt noget om at functioner kan behandles som datatyper i C#. Det er defor jeg håber det kan lade sig gøre.
Avatar billede erikjacobsen Ekspert
02. april 2007 - 10:48 #1
Kig på delegates
Avatar billede hygta Nybegynder
03. april 2007 - 08:59 #2
Det her virker:

    public void functionName(){
        //Do something
    }   

    public delegate void setupDelegate();

    public void setup(string text1, string text2, string goButton){
        this.text1.Text=text1;
        this.text2.Text=text2;
        this.go.Text = goButton;
       
        setupDelegate theFunction = new setupDelegate(functionName);

        theFunction();

    }

Men Men......
Det jeg gerne vil er at få et functions navn med ind i functionsheaderen.
Det kan jeg ikke få til at virke. Det skal være noget i stil med:

    public delegate void setupDelegate();

    public void setup(string text1, string text2, string goButton, method functionName){
        this.text1.Text=text1;
        this.text2.Text=text2;
        this.go.Text = goButton;
       
        setupDelegate theFunction = new setupDelegate(functionName);

        theFunction();

    }
Avatar billede erikjacobsen Ekspert
03. april 2007 - 09:10 #3
Du kan skrive
  new setupDelegate(functionName)
som 3. parameter, hvis den er af typen setupDelegate.
Avatar billede hygta Nybegynder
03. april 2007 - 09:43 #4
Jeg har nu det her i en usercontrol:

    public delegate void setupDelegate();
    private setupDelegate yyy;

    public void setup(setupDelegate ttt)
    {
        yyy = ttt;
    }
    protected void go_Click(object sender, EventArgs e)
    {
        yyy();
    }

Og jeg har det her på den side hvor min usercontrol bruges (FromToDate1 er min usercontrol):

  private void hh(){
        show1.Text = "dfgdfg";
    }

    protected void FromToDate1_Load(object sender, EventArgs e)
    {
        FromToDate1.setup(new fromToDate.setupDelegate(hh));
    }

Det virker som det skal :)
Tak for hjælpen erikjacobsen
Smid et svar ;)
Avatar billede erikjacobsen Ekspert
03. april 2007 - 10:46 #5
Jeg samler slet ikke på point, tak.
Avatar billede hygta Nybegynder
03. april 2007 - 16:02 #6
Så bliver der da bare lukket :)
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