Avatar billede Slettet bruger
16. oktober 2007 - 23:38 Der er 17 kommentarer og
1 løsning

Tilgang til anden form's egenskaber?

Hej eksperter!

Når jeg har oprettet en instans af en form (lad os sige OpenWindow1 af klassen Form1), hvordan skaffer jeg mig så adgang til den fra andre scopes end formen selv? Jeg kan godt få VC# til at finde dens egenskaber (ved at skrive NAMESPACE.OpenWindow1.EN_ELLER_ANDEN_EGENSKAB_ELLER_METODE), men der sker intet, når jeg ændrer en egenskab eller kalder en metode. Hvorfor ikke? Hvad skal jeg gøre?

Eksempel:

Jeg har en public metode i Form1 ved navn SomeMethod.
Jeg skriver i Main:

Form1 OpenWindow1 = new Form1();
Application.Run(OpenWindow1);

Og et andet sted end under Form1:

NAMESPACE.OpenWindow1.SomeMethod();

VC# melder ikke fejl, men metoden udføres ikke.
Avatar billede koppelgaard Praktikant
17. oktober 2007 - 08:06 #1
jeg tror at http://www.eksperten.dk/spm/799574 vil kunne hjælpe dig.
Michael
Avatar billede nielle Nybegynder
17. oktober 2007 - 08:27 #2
Hvis ellers Visual studio compiler så burde der ikek være noget i vejen med koden som sådan - kun den måde den bruges den på.

Der er dog noget der under mig ved det skrevne. Hvis OpenWindow1 erklæres i Main() så burde den være lokal til Main() og kan derfor ikke tilgås uden fra denne.
Avatar billede Slettet bruger
17. oktober 2007 - 18:43 #3
Når jeg skriver
public Form1 OpenWindow1 = new Form1();
får jeg følgende fejl:

Error    1    Invalid expression term 'public'
Error    2    ; expected
Avatar billede nielle Nybegynder
17. oktober 2007 - 18:44 #4
Du kan ikke bruge public inden i din Main() funktion.
Avatar billede nielle Nybegynder
17. oktober 2007 - 18:47 #5
Gør i stedet noget i denne stil

public Form1 OpenWindow1;
public void Main()
{
        OpenWindow1 = new Form1();
}
Avatar billede Slettet bruger
17. oktober 2007 - 18:47 #6
Jeg fik ikke så meget ud af det link... :/
Avatar billede Slettet bruger
17. oktober 2007 - 18:48 #7
Sec...
Avatar billede Slettet bruger
17. oktober 2007 - 18:50 #8
Så skal jeg vist også sige
public class program
i stedet for
static class program
eller hvad? Og så kan jeg ikke have [STAThread] mere.
Avatar billede Slettet bruger
17. oktober 2007 - 18:51 #9
Nej, Main må ikke være static... Hvad er der så galt?
Avatar billede Slettet bruger
17. oktober 2007 - 18:53 #10
Nu har jeg noget i denne stil (og den kan compiles, men det lykkedes stadig ikke at få adgang til form'en):


namespace Root
{
    static class Program
    {
        public static Form1 OpenWindow1;

        public static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            OpenWindow1 = new Form1();
            Application.Run(OpenWindow1);
        }
    }
}
Avatar billede nielle Nybegynder
17. oktober 2007 - 18:54 #11
Hvor er det du forsøger at få fat i den fra?
Avatar billede Slettet bruger
17. oktober 2007 - 19:27 #12
En instans af en anden klasse.
Avatar billede nielle Nybegynder
17. oktober 2007 - 19:37 #13
Klart nok, men kunne du give et kodeeksempel hvor at du ønsker at bruge den?

Og hvor/hvornår bliver den anden instans egentlig oprettet?
Avatar billede nielle Nybegynder
29. oktober 2007 - 18:27 #14
Hvad med noget respons?
Avatar billede Slettet bruger
30. oktober 2007 - 15:07 #15
Beklager min computer er til reperation... Igen. Igen. Eller... For 14. gang, tror jeg. I hvert fald kommer jeg ikke videre med det foreløbig.
Avatar billede Slettet bruger
02. december 2007 - 21:23 #16
Sådan. Jeg læser lige posten igennem hurtigt...
Avatar billede Slettet bruger
02. december 2007 - 21:24 #17
Nå, jeg kan slet ikke huske, hvad jeg skulle bruge koden til, så jeg lukker bare her... nielle, kan du ikke lige smide et svar?
Avatar billede nielle Nybegynder
02. december 2007 - 21:28 #18
Det er jo hvad der kan ske. ;^)

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