IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Adam Ježek
Tvůrce
Avatar
Adam Ježek:24.1.2014 17:37

Č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
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:24.1.2014 17:40

Zkus to dát do metody OnLoad.

 
Nahoru Odpovědět
24.1.2014 17:40
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Adam Ježek:24.1.2014 17:44

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
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:24.1.2014 18:05

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
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Adam Ježek:24.1.2014 18:22

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
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:24.1.2014 18:27

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

 
Nahoru Odpovědět
24.1.2014 18:27
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Jan Vargovský
Adam Ježek:24.1.2014 19:46

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
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Adam Ježek
David Hartinger:24.1.2014 19:48

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

Nahoru Odpovědět
24.1.2014 19:48
New kid back on the block with a R.I.P
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na David Hartinger
Adam Ježek:25.1.2014 14:37

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
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Adam Ježek
Jan Vargovský:25.1.2014 14:43

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.