Diskuze: Pravý horný krížik neukončí proces

C# .NET .NET (C# a Visual Basic) Pravý horný krížik neukončí proces American English version English version

Avatar
František Pastorek:

Mám taký problém. Ako zatvorím tým pravým horným krížikom prve window form okno tak sa ukončí aplikácia cela aj proces. ALE! Ak cez prvé okno vytvorim druhé a to prvé schovám a aj zatvorím teda použijem metódu Close() a druhe okno zatvorim krizikom tak znovu sa proces neukonci. Skúsil som to teda zavolaním eventu FormClosingEven­tArgs ale nefunguje ani to.

namespace WindowsFormsApplication24
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public void exit(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }
    }
}

Vopred ďakujem za akúkolvek pomoc.

 
Odpovědět 18.1.2015 13:32
Avatar
Odpovídá na František Pastorek
Michal Štěpánek:

Protože to "první okno" bere program jako hlavní. Když ho zavřeš, program se ukončí. Když ho jen schováš a zavřeš všechny ostatní, program stále běží, jen je schovaný.
Pokud z prvního formu vytvoříš druhý form a zavřeš ten první, zavřou se oba formy.

Nahoru Odpovědět 18.1.2015 19:00
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
rwn
Člen
Avatar
Odpovídá na František Pastorek
rwn:

Problém je v tom, že ten tvuj exit je metoda a hádám, že jí nemáš přiřazen k Form2. Normální si v návrhu Form2 koukni v okně Properties na eventy (takovej blesk), je tam událost FormClosing, když na to klikneš dvakrát, tak se ti přiřadí událost Form2 přímo do kódu, kam jen dopíšeš co se při aktivování události má stát. :)

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
    Application.Exit();
}
Nahoru Odpovědět 18.1.2015 19:16
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
František Pastorek:

Michal Štěpánek, vytvoril som inštanciu k Form1 a vo Form2 som ju zatvoril metódou Close(). To aj tak nepomohlo.

rwn Ďakujem :)

 
Nahoru Odpovědět 18.1.2015 20:30
Avatar
αcнερ™
Redaktor
Avatar
αcнερ™:

Čo tak použiť

System.Diagnostics.Process.Kill

? :)

Nahoru Odpovědět 21.1.2015 9:53
. . .
Avatar
Odpovídá na αcнερ™
sadlomaslox25:

to neni moc dobry napad obchazet zbastleny navrh aplikace pres Process.Kill ktery ani nezavola finalizery :)

 
Nahoru Odpovědět 21.1.2015 12:08
Avatar
αcнερ™
Redaktor
Avatar
Nahoru Odpovědět 21.1.2015 12:09
. . .
Avatar
Odpovídá na František Pastorek
Michal Štěpánek:

...a vo Form2 som ju zatvoril metódou Close()...
Je otázka, co jsi to vlastně metodou Close() zavřel. Dej sem ten kód, třeba to bude jen nějaká blbůstka...

Nahoru Odpovědět 21.1.2015 16:48
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
František Pastorek:

Form1 form1 = new Form();
form1.Close();

 
Nahoru Odpovědět 22.1.2015 16:10
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na František Pastorek
Jan Vargovský:

Takhle si nezískáš referenci hlavního formu ve formu 2 ;)

 
Nahoru Odpovědět 22.1.2015 16:13
Avatar
rwn
Člen
Avatar
rwn:

Však to řešení co jsem sem dával je funkční a není potřeba žádná instance z fomr1, nebo to není vhodné to zavírat přes Application.Exit(); v události ve form2? :)

Editováno 22.1.2015 16:23
Nahoru Odpovědět 22.1.2015 16:22
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
František Pastorek:

Je a aj to používam a funguje to skvele :) Ale Michal Štěpánek to chcel vedieť :)

 
Nahoru Odpovědět 22.1.2015 23:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.