Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# nezavírat potomky okna při zavření rodiče

Ahoj,

potřebovala bych poradit - mám Form a po stisknutí tlačítka se zobrazí další instance toho Formu.

private void New()
{
 Form1 f = new Form1();
 f.Show();
}

Funguje to, ale když zavřu první okno, zavřou se i všechny ostatní. Potřebovala bych, aby všechna okna byla na stejné úrovni. Děkuji za každou radu.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Omlouvám se, ten nadpis je asi trochu zavádějící. Řekněme, že spustím aplikaci, otevře se Okno1. Z n…
flemch 03.08.2011 13:23
flemch
Více možností: 1) Hlavní okno otevřete jako skryté(prázdné), viditelná nechte jen podkokna. 2)Použij… nový
Daveran 03.08.2011 14:09
Daveran
Mockrát děkuju, funguje to :-) Jen nechápu poznámku, že bych měla při zavírání "měnit rodiče", když… nový
flemch 03.08.2011 20:46
flemch
Takéto správanie sa klasicky robí pomocou vlastného ApplicationContextu. Spravíš si vlastný kontext… poslední
los 03.08.2011 22:42
los

Omlouvám se, ten nadpis je asi trochu zavádějící.
Řekněme, že spustím aplikaci, otevře se Okno1. Z něho otevřu Okno2 a z Okna2 otevřu Okno3. Všechny vypadají úplně stejně tzn. měly by se stejně i chovat. Když zavřu Okno2, Okno3 se NEzavře, takže vlastně nejde o rodiče a potomky. Ale když zavřu Okno1, ukončí se aplikace a tím pádem se zavřou i všechny ostatní okna.
Já bych potřebovala, aby se aplikace ukončila, až když se zavře poslední otevřené okno, ať už bylo otevřené jako první nebo poslední. Prostě aby z tohoto pohledu byly na stejné úrovni. Ale vůbec nevím, jak toho docílit. Zkoušela jsem hledat, v cestine i anglictine, ale nenasla jsem :-(

Děkuju za odkazy, ale na tohle mi asi nepomůžou, že?

Mockrát děkuju, funguje to :-)
Jen nechápu poznámku, že bych měla při zavírání "měnit rodiče", když jsou instance programu nezávislé. Nicméně to funguje i bez toho, tak snad v tom není nějaký háček...

Takéto správanie sa klasicky robí pomocou vlastného ApplicationContextu. Spravíš si vlastný kontext aplikácie, v ktorom preťažíš metódu OnMainFormClosed, aby sa pri zatvorení hlavného okna neukončila aplikácia. V obsluhe udalosti Application.Idle budeš kontrolovať počet otvorených okien v Application.OpenForms a v prípade, že klesne na nulu, ukončíš aplikáciu.

Samostatné procesy budú fungovať samozrejme tiež, ale so všetkými vlastnosťami, ktoré z toho vyplývajú, ako napr. zložitejšie riešenie komunikácie medzi formulármi, väčšie nároky na systémové prostriedky a pod.

Edit: Vo WPF sa to dá spraviť nastavením jednej vlastnosti Application.ShutdownMode.

Zpět do poradny Odpovědět na původní otázku Nahoru