Avatar billede claushelth Nybegynder
29. juli 2004 - 15:55 Der er 10 kommentarer og
1 løsning

Overfør et objekt mellem to forms

Hej alle

Jeg har nok en rimelig simplen en her:

Jeg har en mainform som læser fra et personobjekt jeg har lavet.
For at oprette en person åbner jeg en ny form og overfør Main objektet selv, så jeg har tilgang til personobjektet fra main i min oprettelsesform.

//Event når der trykkes på en knap i main - en ny form åbner
InputPersonForm inputForm = new InputPersonForm();
            inputForm.ShowDialog(this);

I den nye form opretter jeg et personobjekt i this:
//Når der klikkes opret
person = new Person(tboxFirstName.Text,tboxLastName.Text,Convert.ToInt32(tboxAge.Text));

this.close

Men når jeg vender tilbage til min main er mit personobjekt væk...hvordan får jeg det overført korrekt?
Avatar billede wisen Nybegynder
29. juli 2004 - 15:59 #1
.. din form eksisterer stadig efter at du siger close, så efter din "ShowDialog" kan du sagtens kalde en property på din oprettelsesform for at hente dit personobject...

Du kan i øvrigt sætte en DialogResult på dit oprettelsesform, så du kan signalere til mainformen (via retur parameter fra ShowDialog) om brugeren har trykket OK eller Annuller
Avatar billede claushelth Nybegynder
29. juli 2004 - 16:18 #2
Men hvad er så meningen med at føre this med over til min nyeform?
Jeg tror jeg får løst problemet hvis jeg finder ud ag hvordan jeg får tilgang til personobjektet i min nye form fra min main!

Det skal siges at jeg har 3 klasser i alt:
- En person klasse
- En main form (der init personklassen)
- En oprettelses form (init af personklassen (er dette nødvendigt))

Mainform kan to ting:
- Spørge om der er oprettet et personobjekt, hvis der er så vis det.
- Kalde oprettelsesform på denne måde:
    InputPersonForm inputForm = new InputPersonForm();
    inputForm.ShowDialog(this);

Oprettelses formen:
- Opretter et personobjekt og dette skal sættes lig et personobjekt i mainklassen (formen)
    = new Person(tboxFirstName.Text,tboxLastName.Text,Convert.ToInt32(tboxAge.Text));
og derefter lukke sig selv
    this.close();
Avatar billede wisen Nybegynder
29. juli 2004 - 16:22 #3
.. som jeg ser det har du ikke brug for en reference til din mainform i oprettelsesformen... det du skal gøre et at lave en private member på din oprettelsesform og assigne til den når du opretter et personobject.

Du skal derefter lave en property så du fra mainformen kan tilgå det object
Avatar billede claushelth Nybegynder
29. juli 2004 - 16:33 #4
ja men det er jo et problem at få adgang til min main form fra min oprettelses form, uden at oprette et nyt mainform objekt i oprettelsesformen....du må undskylde hvis jeg misforstår.

Jeg har gjort som du siger og jeg kan kun få fat i mine properties fra  oprettelsesformen hvis jeg opretter en ny main, og det er jo forkert da det allerede eksistere, og det er det jeg skal have fat i (det er vel også derfor man skal overføre this til oprettelsesformen)!
Avatar billede wisen Nybegynder
29. juli 2004 - 16:36 #5
Nej, det skal være omvendt - propertien skal ligge på oprettelsesformen så du fra mainformen kan tilgå den...

.. noget i stil med :

Person person = null;

InputPersonForm inputForm = new InputPersonForm();
if( inputForm.ShowDialog(this) == DialogResult.OK )
person = inputForm.Person;
Avatar billede claushelth Nybegynder
30. juli 2004 - 08:40 #6
weeeeee....tak så fik jeg fat i den...er ved al lære at arbejde med forms...har lige bestilt min bog ;-) takker mange gange...smid et svar.
Avatar billede wisen Nybegynder
02. august 2004 - 07:53 #7
1 stk. svar :)
Avatar billede claushelth Nybegynder
02. august 2004 - 08:09 #8
Takker ;o)
Avatar billede claushelth Nybegynder
02. august 2004 - 08:10 #9
Damn...nu er den der :-)
Avatar billede claushelth Nybegynder
02. august 2004 - 08:10 #10
ok...så er det sidste gang!
Avatar billede wisen Nybegynder
02. august 2004 - 08:36 #11
hehe - takker for point :)
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