Avatar billede germann Nybegynder
18. januar 2005 - 21:44 Der er 8 kommentarer og
1 løsning

Erklærere classer globalt

Hej Alle,

I Delphi kan man bruge funkter og routiner fra andre forms ved at bruge ex. USES Form2, Så kan man bruge alle funktioner fra Form2 på Form1.

Kan man gøre noget tilsværende i C# eller bliver man nød til at create formen hvergang

Form2 form2 = new Form2();
form2.blaa = blaa;

Hjælpe

Kasper
Avatar billede arne_v Ekspert
18. januar 2005 - 21:46 #1
Metoder som ikke er static skal du have fat på en instans af klassen for at
kunne kalde. Dog ikke nødvendigvis en ny instans.

Metoder som er static kan du kalde med klasse navnet uden instans.
Avatar billede arne_v Ekspert
18. januar 2005 - 21:49 #2
Jeg lavede engang det her eksmepel for at illustere static versus non static:

using System;

public class Demo
{
    private static int si = 0;
    private int nsi = 0;
    public Demo()
    {
        si++;
        nsi++;
    }
    public void printNsi()
    {
        Console.WriteLine(nsi);
    }
    public static void printSi()
    {
        Console.WriteLine(si);
    }
    public static void Main()
    {
        Demo d1 = new Demo();
        Demo d2 = new Demo();
        d1.printNsi();
        d2.printNsi();
        Demo.printSi();
    }
}
Avatar billede arne_v Ekspert
18. januar 2005 - 21:50 #3
En kortere version.

ikke static:

Form2 f = new Form2();
f.dosomething();

static:

Form2.dosomething();
Avatar billede germann Nybegynder
18. januar 2005 - 22:15 #4
Mit problem ved static er, at jeg ikke kan skrive til objekter.

ex.

using System;

public class Demo
{
    private static int si = 0;
    private int nsi = 0;
    public Demo()
    {
        si++;
        nsi++;
    }

    public static void printSi()
    {
        textBox1.Text = "test"  /////DETTE GÅR IKKE
    }
    public static void Main()
    {
        Demo.printSi();
    }
}
Avatar billede arne_v Ekspert
18. januar 2005 - 22:18 #5
Det har intet med læs/skrive at gøre.

Du kan sagtens lave:

textBox1.Text = "test" 

i en static metode *HVIS* textBox1 er static.

(men det er TextBox'e normalt ikke ....)
Avatar billede arne_v Ekspert
18. januar 2005 - 22:19 #6
Jeg tror at du skal have en reference til din form sendt over i den anden form.
Avatar billede arne_v Ekspert
18. januar 2005 - 22:21 #7
Eksempel:

Form1 f1 = new Form1();
Form2 f2 = new Form2(f1);

hvor Form2 ser ud som:

public class Form2 : Form
{
    private Form1 f1;
    ...
    public Form2(Form1 f1)
    {
        this.f1 = f1;
    }
    ...
}

så kan alle metoder i Form2 nemlig bruge f1 til at kalde metoder i Form1.
Avatar billede germann Nybegynder
18. januar 2005 - 22:33 #8
Tak for hjælpen. Jeg har fået noget at arbejde med. Jeg syntes stadig det er besværligt, men sådan er C# åbenbart. Delphi er noget mere simpel på dette punkt.
Avatar billede arne_v Ekspert
18. januar 2005 - 22:36 #9
så ligger jeg er svar
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