RE: ApplicationContext ještě jednou a lépe

Nakonec uveřejňuji následující text do samostatného příspěvku, trošku více jsem se rozepsal na otázku položenou v komentářích k příspěvku ApplicationContext ještě jednou a lépe. A také proto, že autor dotazu na sebe nezanechal kontakt(?) a tak jej nemohu s odpovědí dát lépe vědět.

Skrytí formuláře při startu aplikace

Ač trošku pozdě přicházím s odpovědí, přeci. Property Visible se nastavuje uvnitř vykonávání metody Application.Run() a to vždy na hodnotu true. Tudíž není možné spustit žádný formulář jako neviditelný. Podotýkám, že se stále bavíme o formuláři, nikoliv jen o zobrazení NotifyIcon.

Není však třeba zoufat, i toto má řešení, byť nevede přes ApplicationContext (nebo jsem jej jen nenalezl). V čem vlastně spočívá problém? Ten je v tom, že formulář při všemožném volání metody Hide() na malou chvilku problikne na obrazovce a to i v okamžiku, kdy se budeme snažit přepsat metodu OnShow.

Řešením tak je umístit formulář v události Load na pozice mimo obrazovku a v metodě OnShow jej následně skrýt. Samozřejmě nesmíme zapomenout na to, jej při následném požadavku na zobrazení napozicovat na určené místo. Např. při doubleclick na NotifyIcon. Osobně se mi líbí myšlenka napozicování formuláře na hodnoty

Left = int.MinValue;
Top = int.MinValue;

Snad tyto informace pomohou a dostatečně jsem zodpověděl položenou otázku.

code-snippet
Posted by: Jarda Jirava
Last revised: 21 Feb, 2007 02:56 PM History

Comments

frankstein
frankstein
23 Feb, 2007 11:19 AM @ version 0

Nesledoval som debatu od zaciatku, ani niesom najsam expert na winforms, ale mam jednu otazocku:

Nepomozu ani metody SuspendLayout() a ResumeLayout()?

Tieto mi uz pomohli pri zopar 'preblikavaniach'.

Zdravim,

F.


24 Feb, 2007 09:49 PM @ version 0

Ahoj,

 tady nejde o problikávání formuláre, ale o jeho zobrazení a následné skrytí (címž dojde k probliknutí formuláre na obrazovce).

 Urcite ale díky za snahu poradit.

beran
beran
07 Mar, 2007 12:42 AM @ version 0

dobry den,

ta odpoved byla na muj dotaz. diky za ni. ja jsem se nakonec dopidil k reseni pomoci ApplicationContext.

(omluvte, prosim, pokud pouziji nektery vyraz nepresne, jsem teprve zacatecnik)

jde o to nepredavat metode Application.Run jako parametr Form1, coz je standardni reseni, ktere Vam podsune VisualStudio, ale treba objekt context, ktery si vytvorim.

mujAppContext context = new mujAppContext();

Application.Run(context);

no a v ramci tridy mujAppContext mam nadefinovany formular.

Ma to ale hacek, pri zavreni formulare, neni uzavrena aplikace. Je to tedy treba osetrit.

Jeste jednou diky a hodne zdaru.

paul
paul
14 Jun, 2007 09:10 PM @ version 0

Ahoj,

nastavit pozici okna mimo obrazovku, aby ji metoda Run nezobrazila je pekny figl. Sice se mi to moc nelibi, ale je to jedine reseni v .NET CF, na "velkem" .NET F je lepsi ten AppContext.

purq
purq
17 Dec, 2007 09:31 AM @ version 0

Cetl jsem to jen zbežne, ale proc zobrazovat formulár, když ho potom budeme hned chtít zavrít? to ho nemužeme zobrazit, teprv až ho budem potrebovat?

Your Comments

Used for your gravatar. Not required. Will not be public.
Posting code? Indent it by four spaces to make it look nice. Learn more about Markdown.

Preview