Zavření víceformulářové aplikace – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zavření víceformulářové aplikace – .NET – Fórum – Programujte.comZavření víceformulářové aplikace – .NET – Fórum – Programujte.com

 

Alelopatta
~ Anonymní uživatel
6 příspěvků
8. 7. 2012   #1
-
0
-

Dobrý den,

jak se má zavřít formulář, který se zobrazí metodou Show()?
Používám this.Dispose(false), ale to je asi špatně.

(Když dam "Start Debugging" a ukončim aktuální formulář kliknutím na červený křížek,
Visual C# si myslí, že aplikace ještě běží.)

dík

Nahlásit jako SPAM
IP: 88.102.98.–
amertak0
Návštěvník
8. 7. 2012   #2
-
0
-

mě přijde adekvátní metoda Close() :)

Nahlásit jako SPAM
IP: 80.251.241.–
LukoSS
~ Anonymní uživatel
73 příspěvků
Nahlásit jako SPAM
IP: 91.95.49.–
Alelopatta
~ Anonymní uživatel
6 příspěvků
8. 7. 2012   #4
-
0
-

Píše se tam toto:

Asi máš někde nějaký formulář, který je skrytý. Jinak, pro zavření celé aplikace můžeš použít

Application.Exit();

Existuje nějaká metoda na zavření skrytého formuláře?

Nahlásit jako SPAM
IP: 88.102.98.–
amertak0
Návštěvník
8. 7. 2012   #5
-
0
-

   

Environment.Exit(0);

Toto je to nejvíc HC co můžeš udělat :D

Nahlásit jako SPAM
IP: 80.251.241.–
Alelopatta
~ Anonymní uživatel
6 příspěvků
8. 7. 2012   #6
-
0
-

 Všechny tyto kódy způsobí konec celé aplikace:

Form f = new Form4();
f.Show();
Environment.Exit(0);
Form f = new Form4();
f.Show();
Close();
Nahlásit jako SPAM
IP: 88.102.98.–
LukoSS
~ Anonymní uživatel
73 příspěvků
8. 7. 2012   #7
-
0
-

#6 Alelopatta
Close() zavírá jen aktuální formulář a ne celou aplikaci, takže pokud bude v pozadí běžet ještě další form, tak poběží aplikace dál, jen třeba nebude vidět..

#4 Alelopatta
Přesně jak je tam napsané, Application.Exit(); zavře celou aplikaci (tedy i skryté formy).

Nahlásit jako SPAM
IP: 91.95.49.–
ingiraxo+15
Grafoman
9. 7. 2012   #8
-
0
-

Pokud máš někde skrytej formulář, kteréj beží na pozadí někde a nevytvořil jsi si způsob jak ho ukončit, tak se nekde stala chyba nemyslíš?

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Alelopatta
~ Anonymní uživatel
6 příspěvků
9. 7. 2012   #9
-
0
-

Co znamená skrytý formulář a formulář v pozadí?

Nahlásit jako SPAM
IP: 88.102.98.–
amertak0
Návštěvník
9. 7. 2012   #10
-
0
-

Skrytý formulář (v pozadí) je formulář, který nejde vidět, ale stále něco dělá (např. nějaký výpočet). To že nejde vidět neznamená, že tam není. Pokud třeba v metodě Close neukončuješ to pracovní vlákno nebo výpočet, tak potom formulář stále žije.

Nahlásit jako SPAM
IP: 80.251.241.–
ingiraxo+15
Grafoman
9. 7. 2012   #11
-
0
-

#9 Alelopatta
někdy častej případ je ten, že hlavní vlákno otevře formulář (ten hlavní třeba Form1) a formulář Form1 otevře druhej Form2, kde se Form1 skryje aby nebyl vidět... nyní když ukončíš Form2, tak to vypadá že aplikace je ukončená, ale Form1 je tam stále je a běží

resp. pokud skryješ formulář (třeba přes Hide()), tak ten formulář běží na pozadí (není vidět)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Alelopatta
~ Anonymní uživatel
6 příspěvků
9. 7. 2012   #12
-
0
-

Zkouším už od včera a pořád to nejde.

Prosím, napište někdo příklad, jak zavřít Form1 a zobrazit Form2, aby nikde nebyl žádný skrytý form.

Nahlásit jako SPAM
IP: 88.102.98.–
ingiraxo+15
Grafoman
9. 7. 2012   #13
-
0
-

#12 Alelopatta
to nejde... Form1 jede na hlavním vláknu, pokud ho zavřeš ukončíš program... ale můžeš při zavření Form2 zavolat i Form1 aby se ukončil.. buď přes událost nebo přes konstruktor (předáš Form1 do Form2)

ale nějak postrádm smysl skrývat Form1 a otevírat další Form2.. to už je lepší otevřít Form2 jako dialog (pokud jde o nastavení třeba)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Alelopatta
~ Anonymní uživatel
6 příspěvků
9. 7. 2012   #14
-
0
-

Myslím, že to smysl má, protože ten Form1 je přihlašovací.

Nahlásit jako SPAM
IP: 88.102.98.–
liborb
~ Redaktor
+18
Guru
9. 7. 2012   #15
-
0
-

Pokud nemá smysl zobrazovat hlavní form (Form1) dokud se nepřihlásí přes Form2 (form2 vrací OK), tak třeba takto:

private void Form1_Load(object sender, EventArgs e)
{
	Form2 form2 = new Form2();

	if (form2.ShowDialog() != DialogResult.OK)
	{
		Close();
	}
	else
	{
		BringToFront();
	}
}
Nahlásit jako SPAM
IP: 78.80.52.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý