Avatar billede Slettet bruger
21. maj 2008 - 17:49 Der er 17 kommentarer og
1 løsning

Funktion tilgår instans af Form?

Hej eksperter!

Hvordan kan jeg få en funktion i en klasse til at tilgå en Form?
F.eks. har jeg nu brug for at lade klassen Interface tilgå en instans af Form_Main.
Avatar billede arne_v Ekspert
21. maj 2008 - 18:15 #1
Hvis du i Form_Main.something kalder med:

mininterfaceinstans.noget(this);

og i Interface (meget daarligt navn for en klasse !!!!) har:

void noget(Main_Form f)

saa kan du goere det.
Avatar billede Slettet bruger
21. maj 2008 - 18:16 #2
Hmm, jeg har ingen instanser af Interface, da det er en statisk klasse. Ændrer det noget?
Avatar billede arne_v Ekspert
21. maj 2008 - 18:40 #3
Ikke meget.

Forkertnavn.noget(this);

og

static void noget(Main_Form f)
Avatar billede arne_v Ekspert
21. maj 2008 - 18:40 #4
evt. lige en public paa metoden ...
Avatar billede Slettet bruger
21. maj 2008 - 19:39 #5
Du kan virkelig ikke lide mit klassenavn, hvad?
Jeg kikker lige på det.
Avatar billede arne_v Ekspert
21. maj 2008 - 19:57 #6
Da interface er et keyword i C# saa synes jeg at det er meget forvirrende at bruge
Interface som navn paa en klasse.
Avatar billede Slettet bruger
21. maj 2008 - 20:05 #7
Tja. Havde andre end mig selv skulle rode i kildekoden, ville jeg lytte til dit råd... Men personligt kan jeg sagtens finde ud af det.
Kikker videre...
Avatar billede Slettet bruger
21. maj 2008 - 20:10 #8
static class Interface
    {
        public static Form_Main Form_Main_Instance;
        public static string Write(string message)
        {
            Form_Main_Instance.TextBox_Messages.Text = "Test...";
        }
    }
/////
    public partial class Form_Main : Form
    {
        public Form_Main()
        {
            InitializeComponent();
            Interface.Form_Main_Instance = this;
        }

        private void Button_Ready_Click(object sender, EventArgs e)
        {
            Close();
        }
    }

Virker ikke :(
Avatar billede arne_v Ekspert
21. maj 2008 - 20:19 #9
Det eneste som springer i mine oejne er at Write ikke returnerer en string.
Avatar billede arne_v Ekspert
21. maj 2008 - 20:20 #10
(og saa kan jeg heller ikke lide at gemme en ref til en instans i en static member - det
gaar grueligt galt den dag der laves 2 instanser af Form_Main)
Avatar billede Slettet bruger
21. maj 2008 - 20:33 #11
1)
Har vel ikke noget med det at gøre... Tjekker lige.

2)
Nej, den begynder vel bare at referere til den nye Form_Main? Desuden skal jeg kun bruge én ad gangen.
Avatar billede Slettet bruger
21. maj 2008 - 20:36 #12
Haha! Jeg havde glemt at sætte tekstfeltets modifier til public :) Dum fejl!
Smid du bare et svar... Nu tror jeg, jeg kan få det hele til at fungere.
Avatar billede Slettet bruger
21. maj 2008 - 20:51 #13
Hov - hvorfor kan jeg ikke have default parameters her:

    static class Interface
    {
        public static Form_Main Form_Main_Instance;
        public static string Write(string message, bool newLine = true)
        {
            if (newLine)
                return Form_Main_Instance.TextBox_Messages.Text += "\n" + message;
            return Form_Main_Instance.TextBox_Messages.Text += message;
        }
    }

???

"Default parameter specifiers are not permitted"
Avatar billede arne_v Ekspert
21. maj 2008 - 20:59 #14
Det kan man ikke i C# (man kan i C++ og VB.NET).
Avatar billede arne_v Ekspert
21. maj 2008 - 20:59 #15
Og et svar.
Avatar billede Slettet bruger
21. maj 2008 - 21:10 #16
Ups (jeg har vist skrevet for meget AS3)! Alligevel skriver compileren en specifik fejlmeddelelse i stedet for at give en syntaksfejl?
Avatar billede arne_v Ekspert
22. maj 2008 - 00:33 #17
Du er nok ikke den første som har forsøgt det - så de har besluttet at give en
præcis fejl meddelelse.
Avatar billede Slettet bruger
22. maj 2008 - 06:51 #18
Hehe, det var da rart :) Men faktisk lidt misvisende, da jeg først troede, at jeg havde skrevet noget forkert, og man godt kunne anvende default parameters. Nå, men det er jo også bare en begynderfejl. Tak for hjælpen!
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