Avatar billede lasserasch Juniormester
19. september 2006 - 02:21 Der er 4 kommentarer og
1 løsning

Få en streng skrevet som formnavn.

Hejsa.

Har et hurtigt spørgsmål.

Jeg har 2 forms i c#.

form1 og form2
Dvs. form2 er ikke en form men en class, som jeg gerne vil have til at fungere som funktions samlingssted. Dvs. jeg ville gerne lave forskellige funktionskald til denne class, og så få resultatet retur i min form, hvor jeg kalder fra.

f.eks. vil jeg gerne kunne sætte navn på forms, om de skal have max/minimize knapper osv.

Dvs. jeg vil altså gerne kunne gøre sådan her fra form1, hvor navnet på funktionsformen er lavet med linien :

frm_functions Functions = new frm_functions();

------
private void Form1_Load(object sender, EventArgs e)
        {
            Functions.set_formtitle(frm_main, "Main Page");
        }
------


I min funktionsform vil jeg så gerne kunne lave noget ala følgende :

  private frm_main frm_main; 
 

  public void set_formtitle(String Form, String Title)
        {
            this.form1 = form1;
            Title = "Remote Controller - " + Title;
           
        }


Jeg ved godt at jeg kunne lave dette ved ikke at bruge en public void og så bare lave en return med den værdi jeg vil sætte form titlen til.

Men grunden til at jeg gerne vil gøre det andeledes, var for at spare lidt kode i alle forms.

Jeg kunne også godt tænke mig at sætte max/minimize til true/false på den form jeg kalder funktionen fra.

Det kan godt være det er mig som har fået noget galt i halsen, men for at kunne disse ting er man så ikke nødt til at oprette en reference fra min funktions class til den form der kaldes fra?

Mit problem er at jeg ikke ved hvordan jeg gør det.

Hvordan kan jeg fortælle min funktion som f.eks. sætter form titlen, hvilken form den skal sætte den på?

Håber der er en som kan forstå lidt af hvad jeg siger her, og kan se min problemstilling.

Og gerne fortælle mig hvordan det kan gøres nemmest, og evt. et lille eksempel!

Tak!

/Lasse
Avatar billede thesurfer Nybegynder
19. september 2006 - 02:34 #1
Eksempel:

Formen ("Form1"):

        private clsFunctions funktioner = new clsFunctions();
        private void button1_Click(object sender, EventArgs e)
        {
            funktioner.skrivtitel(this);
        }


Klassen ("clsFunctions"):

    class clsFunctions
    {
        public Form1 skrivtitel(Form1 f)
        {
            f.Text = "Test";
            return f;
        }
    }
Avatar billede thesurfer Nybegynder
19. september 2006 - 02:38 #2
Hmm... ikke godt..

Problemet opstår i denne linie:

        public Form1 skrivtitel(Form1 f)

da den kun virker når man kalder funktionen fra Form1 og ikke Form2 (osv)..
Avatar billede thesurfer Nybegynder
19. september 2006 - 02:40 #3
Sådan.. så virker det (klassen "clsFunctions"):

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace eksperten_form_functions
{
    class clsFunctions
    {
        public Form skrivtitel(Form f)
        {
            f.Text = "Test";
            return f;
        }
    }
}
Avatar billede thesurfer Nybegynder
19. september 2006 - 02:42 #4
Smider lige et svar, da jeg muligvis smutter i seng om lidt..

Men anyways..

Brug

        public Form NavnetPåFunktionen(Form f)
        {
            // Gør noget ved formen der lavede kaldet, som har fået referencen "f":
            f.Text = "Test";


            return f;
        }

Husk at tilføje linien "using System.Windows.Forms;".. ellers virker det ikke.
Avatar billede lasserasch Juniormester
19. september 2006 - 02:53 #5
Yes sir... Lige det jeg ledte efter. Og når man tænker sig lidt om, så er det jo logik for burhøns... så tak for det!

Hermed points!

/Lasse
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