Avatar billede iblarsen Praktikant
15. juli 2005 - 07:51 Der er 19 kommentarer og
1 løsning

Besked når en form lukkes

Jeg har en form1, hvorfra jeg åbner et antal nye form2. Jeg gemmer (i form1) alle de Handles der dannes i forbindelse med de nye form2's.
Hvordan kan jeg få besked i form1, om at et af form2'erne er blevet lukket?
Avatar billede wisen Nybegynder
15. juli 2005 - 08:45 #1
.. en form har to events "Closing" og "Closed" som du eventuelt kan bruge. Hook en eventhandler på "Closed" eventet når du skaber dine instanser af Form2 - så vil den eventhandler blive kaldt når den instans af Form2 lukker.
Avatar billede iblarsen Praktikant
15. juli 2005 - 09:02 #3
wisen: Tusind tak. Hvor er det enkelt, når man bare tænker sig lidt om. Smid lige et svar.
Avatar billede iblarsen Praktikant
15. juli 2005 - 09:10 #4
wisen: Kan du klare et enkelt tillægsspørgsmål.
Hvis jeg nu har 3 versioner af Form2 kørende.
Og gerne vil udføre Form2.MinFunktion() (nr. 2 åbnet) fra Form1 af.
Hvordan fikser man så det.
Avatar billede wisen Nybegynder
15. juli 2005 - 09:32 #5
Hvis "MinFunktion()" er public på Form2, og du har en reference til formen, så kan du bare kalde den - eller misforstår jeg?
Avatar billede wisen Nybegynder
15. juli 2005 - 09:32 #6
1 stk. svar :)
Avatar billede iblarsen Praktikant
15. juli 2005 - 09:49 #7
wisen: Jeg har nok forklaret mig dårligt.

Hvis jeg nu har åbnet Form2 3 gange. Og senere i programmet har brug for at kalde en funktion i den Form2 som jeg åbnede som nr. 2 - hvordan gør jeg så det? De hedder jo det sammen, den eneste måde jeg kan skeldne mellem de 3 Form2 - er den handle som form2 har returneret til mig i forbindelse med åbningen.
Avatar billede wisen Nybegynder
15. juli 2005 - 10:04 #8
Gemmer du ikke .NET referencen?

Form2 nr1 = new Form2();
Form2 nr2 = new Form2();
...
Avatar billede iblarsen Praktikant
15. juli 2005 - 10:34 #9
Nej - Jeg opretter en ny form2, hver gang man klikker på et emne i et datagrid. Derfor oprettes der x antal form2. Jeg gemmer dog de enkeltes handle (form2.handle).
Avatar billede wisen Nybegynder
15. juli 2005 - 10:41 #10
jeg tror det vil være noget nemmere hvis du gemmer referencen istedet... derfra kan du jo også få fat i den handle - når du har brug for den
Avatar billede iblarsen Praktikant
15. juli 2005 - 10:48 #11
Har du et eksempel?
Avatar billede wisen Nybegynder
15. juli 2005 - 10:53 #12
Prøv at poste det kode du bruger til at skabe instanser af din form2
Avatar billede iblarsen Praktikant
15. juli 2005 - 11:10 #13
private void Person()
{
  frmDetaljer_Person frmPerson = new frmDetaljer_Person();
  frmPerson.Closed += new EventHandler(frmPerson_Closed);
  SaveHandle(Convert.ToInt32( frmPerson.Handle.ToString());
  frmPerson.Show();
  frmPerson.BringToFront();
}
Avatar billede wisen Nybegynder
15. juli 2005 - 11:26 #14
.. hvad gør du i "SaveHandle" ?
Avatar billede iblarsen Praktikant
15. juli 2005 - 11:36 #15
Gemmer den handle jeg får tilbage. Så jeg senere kan bruge den til evt. at checke at samme Person ikke vises flere gange samtidigt.
Dette gøres ved at benytte:
      [DllImport("user32.dll")]
      static extern int GetWindowText(int hWnd, StringBuilder text, int count);
Samtidig ryder jeg op, når et form lukkes (som du forklarede tidligere)
Avatar billede wisen Nybegynder
15. juli 2005 - 12:41 #16
GetWindowText svarer til at du bruger frmDetaljer_Person.Text - så hvis du laver en SaveReference i stedet:

void SaveReference( frmDetaljer_Person frm )
{
...
}
Avatar billede iblarsen Praktikant
15. juli 2005 - 13:12 #17
Jeg prøver at lege lidt med det.
Min sommerferie starter om nogle timer. Så hvis du ikke hører noget fra inden. Vender jeg tilbage senere med en kommentar. Tak for hjælpen!
Avatar billede wisen Nybegynder
15. juli 2005 - 13:18 #18
OK - det var så lidt... go' ferie :)
Avatar billede iblarsen Praktikant
15. juli 2005 - 13:41 #19
Så lykkedes det. Jeg gemmer form2 i en arraylist - som du er inde på. Og nu har jeg helt styr på hvilke forms jeg har i luften. Endnu en gang tak for hjælpen!!!!
Avatar billede wisen Nybegynder
15. juli 2005 - 14:37 #20
Det var så lidt.
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