Diskuze: "nejde" Application.Exit()

C# .NET .NET (C# a Visual Basic) "nejde" Application.Exit() American English version English version

Avatar
Adam Ježek
Tým ITnetwork
Avatar
Adam Ježek:

Čaute,
mám v aplikaci hned na začátku v

public Form1()
{
    InitializeComponent();
    souhla();
}

pčidanej řádek na zaolání metody souhla, která vypadá takto:

private void souhla()
       {
           DialogResult souhlas = MessageBox.Show("Autor nenese za program jakoukoliv zodpovědnost. Soulasíte s použitím na vlastní riziko? ", "Potvrzení zodpovědnosti", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
           if (souhlas == DialogResult.No)
           {

               MessageBox.Show("Je mi líto, ale musíte souhlasit", "Takhle by to nešlo :(", MessageBoxButtons.OK, MessageBoxIcon.Stop);
               Application.Exit();
           }
       }

a máv případě zamítnutí souhlasu ukázat okno s tim, že jetřeba souhlasit(to se stane) a aplikaci potom ukončit. je jedno jak ten messagebox o tom, že je třeba souhlasit zavřu (křížek, ok), ale aplikace z vesela naběhne a neukončí se.
podle mě je to v tom, že se tato akce vykonává ještě dřív,než vůbec naběhne to okno, takže se to neukončí. napadlo mě, že by se místo toho změnila proměnná a po spuštení by tam byl nějaký timer, který by zjistil, co je v tý proměnný a buď by se zastavil, nebo by aplikaci vypnul, ale podle mě nejspíš bude bude nějaký eleantnější řešení.
A pokud ano, jaký?
Dík.

Odpovědět 24.1.2014 17:37
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:

Zkus to dát do metody OnLoad.

 
Nahoru Odpovědět  +1 24.1.2014 17:40
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Jan Vargovský
Adam Ježek:

tak sem si trošku zagůglil, ale jak to přes onload vypnout sem nepochopil.
Takže můžeš mi prosím říct jak?

Nahoru Odpovědět 24.1.2014 17:44
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:

OnLoad je první metoda, která se vykoná, až je formulář připravený. Jednoduše si jí najdi v eventech(událos­tech) v designeru v properties a nebo napiš v kódu override, vyber onload a tam do ní dej ještě tu tvojí metodu.

Pak existuje ještě lepší varianta, ale tou tě nebudu zatěžovat :) (jde o to, že by ses zeptal, jestli se ta aplikace má vůbec spustit)

Editováno 24.1.2014 18:05
 
Nahoru Odpovědět 24.1.2014 18:05
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Jan Vargovský
Adam Ježek:

první metoda, co se vykoná...
já to z toho prvního komentářa pochopil tak, že má něco společnýho s ukončením :D

protected override void  OnLoad(EventArgs e)
{
    souhla();
}

ale dík, funguje :)

Editováno 24.1.2014 18:25
Nahoru Odpovědět 24.1.2014 18:22
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:

To volání base.OnLoad(e) tam nechej.

 
Nahoru Odpovědět 24.1.2014 18:27
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Jan Vargovský
Adam Ježek:

si řek brzo.
ale funguje to v pohodě i bez něj, ale radši to tam vrátim

Nahoru Odpovědět 24.1.2014 19:46
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Adam Ježek
David Čápka:

Application.Exit(); bys neměl používat nikde, formulář jde zavřít pomocí Close().

Nahoru Odpovědět  +1 24.1.2014 19:48
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Adam Ježek:

můžu se zeptat proč by nemělo? já ho mam v několika aplikací a dou v pohodě, včetně tajtý

Nahoru Odpovědět 25.1.2014 14:37
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:

Protože applikace má jeden hlavní formulář od kterého se odvíjí. A stačí na tom hlavním zavolat Close metodu, aby se zavřeli i všechny ostatní.

 
Nahoru Odpovědět 25.1.2014 14:43
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 10 zpráv z 10.