Avatar billede webcreator Nybegynder
11. februar 2005 - 16:28 Der er 13 kommentarer og
1 løsning

Overfør reference til objekt fra hoved-form til under-form

Hej Eksperter.

I mit program har jeg i øjeblikket 2 forme. Hoved-form og Under-form. Jeg arbejder på et objekt i min hovedform, som jeg ønsker at min underform også har adgang til. Hvordan fikses dette?

Jeg har forsøgt at overføre referencen til objektet via konstruktøren til Under-formen, men dette virker ikke. Mine objekter er sat Private på Hoved-formen. Sjovt nok ser det ud som om, at det overførte objekt virker fint på Under-formen, for jeg kan se alle metoderne på det i Visual Studio. Men jeg får flg. fejl når jeg eksekverer programmet : www.powerzone.dk/fejl.jpeg
Avatar billede webcreator Nybegynder
11. februar 2005 - 16:31 #1
Fra min hovedform :

// Channel Collection reference
private ChannelCollection chanCol;

// FrmChannels form reference
private FrmChannels frmChannels;


public FrmMain()
{
    InitializeComponent();

    // Initializing FrmChannels form
    frmChannels = new FrmChannels(chanCol);
   
    // Initializing Channel Collection
    chanCol = new ChannelCollection();
}



Fra min under-form :

// Channel Collection reference
private ChannelCollection chanCol;

public FrmChannels(ChannelCollection chancol)
{
    InitializeComponent();

    this.chanCol = chanCol;
}
Avatar billede arne_v Ekspert
11. februar 2005 - 16:33 #2
Du skal ikke kalde med:

frmChannels = new FrmChannels(this);

?
Avatar billede webcreator Nybegynder
11. februar 2005 - 16:35 #3
Hvis jeg kalder med 'this', har jeg så ikke automatisk adgang til alt der er public på min hoved-form? Men nu er mit objekt jo også private. Og så tror jeg ikke det er pænt at gøre det på den måde (?)
Avatar billede webcreator Nybegynder
11. februar 2005 - 17:00 #4
Eller tager jeg fejl?
Avatar billede burningice Nybegynder
11. februar 2005 - 17:11 #5
arne_v>> han prøver at overføre refernce til objectet, ikke selve formen

webcreator>> du har en lille slåfejl der gør at du sætter this.chanCol lig med sig selv, altså null. prøv istedet

this.chanCol = chancol;
Avatar billede burningice Nybegynder
11. februar 2005 - 17:13 #6
dog vil jeg give arne_v ret i at det ville være pænere at lave en public Property til din collection og overføre en reference til hovedformen over til din underform.

Det er generelt dårlig skik at lade andre objecter have direkte adgang til dit object "inner workings".
Avatar billede webcreator Nybegynder
11. februar 2005 - 17:28 #7
Sørme så, om ikke det blot var min tastefejl. Mange tak, Cyber :)

Svartid :)
Avatar billede burningice Nybegynder
11. februar 2005 - 17:32 #8
svar
Avatar billede webcreator Nybegynder
11. februar 2005 - 18:03 #9
Hm, det var underligt. Selv om jeg bare overfører referencen til under-formen, ser det ud til at der i virkeligheden bliver skabt et nyt objekt. Jeg kan i hvertfald ikke se de data der er blevet lagt ind via underformen, på min hoved-form.
Avatar billede webcreator Nybegynder
11. februar 2005 - 18:03 #10
Kan I hjælpe mig med dét problem ?
Avatar billede webcreator Nybegynder
11. februar 2005 - 18:05 #11
Jeg kører noget serialisering fra min under-form, så mine objekter bliver gemt inden jeg lukker formen - skal lige nævnes hvis det kan have relevans. Det er også via under-formen at objekterne bliver de-serialiseret. Men det skal måske ske på hoved-formen? Ville jeg dog gætte på var lige gyldigt, hvilken form jeg tager. Det er jo samme objekt (Collection-klasse) jeg arbejder på, da objekter er reference-typer.
Avatar billede webcreator Nybegynder
11. februar 2005 - 18:14 #12
Jeg har lige testet. Det ser ud til, at jeg skal DeSerialisere på både min Hoved-form og Under-form. Det forstår jeg slet ikke..
Avatar billede webcreator Nybegynder
11. februar 2005 - 18:22 #13
Nogen forslag ?
Avatar billede burningice Nybegynder
11. februar 2005 - 19:08 #14
med mindre at du lukker din mainform, så burde referencen på de to forme være til det samme object.

kan du prøve at vise noget kode hvor du lægger noget i objectet, og henter det frem igen
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