C# Zavírání, otevírání, skrývání formu
Dobré ráno přeji,
dělám práci do školy a snažím se zde využít skrytí a zobrazení formu. Myšlenka je taková, že mám úvodní form, ve kterém vyberu nastavení hry, po dokončení kliknu na tlačítko a zobrazí se form jiný. Potřeboval bych, aby se ten první form hned po otevření toho druhého skryl. Potom při zavření 2. formu chci, aby se opět objevil ten 1. Vypadá to asi takto:
frmStredni form_stredni = new frmStredni();
form_stredni.Show();
this.Close();
tohle mi neotevře ani ten 2. form ..
Zkoušel jsem toto:
frmStredni form_stredni = new frmStredni();
form_stredni.Show();
this.Hide();
Toto funguje, ale nepodařilo se mi potom při zavření druhého formu otevřít ten první.
Předem děkuji za rady.
Zavření prvního formu vypne celou aplikaci, proto se zdá, že se ten druhý ani neotevře. Jak znovu otevíráš ten první? Protože to by mělo normálně fungovat.
A zkus popřemýšlet, jestli by pro tvé potřeby nebylo vhodnější použít ShowModal() a vykašlat se na skrývání formů.
No, abych se přiznal, tak právě nevím, jak otevřít ten první znovu.
Zavoláš na něj Show()
Jak ho z toho jiného formu "zavolám" ?
Nerozumím otázce.
predpokladam ze nevie jak je nazvany jeho prvy form (objekt) :)
ked ten kod z ktoreho to volas patri k hlavnemu formu tak zasa this.Show()
Volám ho právě z jiného formu. Já mám hlavní form, ze kterého otevřu vedlejší a zároveň chci ten hlavní skrýt. Po zavření (vlastním buttonem) toho vedlejšího formu chci znovu zobrazit ten hlavní form. Nevím, jak z toho vedlejšího formu zavolám ten hlavní.
No stejně jako jsi z prvního zavolal ten druhý. jmeno_formu.Show()
Tam ho ale vytvářím..
No jasně, že ho tam vytváříš. Tady si ho zase předáš odkazem třeba v konstruktoru.
Mohu se zeptat jak? Tohle jsme se nikdy neučili. Zkoušel jsem různé způsoby, ale vařím spíše z vody.
Vím, že mám ten form psát někam sem:
a pak ho volat odtud:
Ale nevím do jakých těch závorek.
Perfektní. Funguje. Mnohokrát děkuji.
Ještě bych měl jeden dotaz. Mám tlačítka, které mají v backgroundu obrázek a transparentní pozadí. Nechci, aby kolem toho byl border, takže jsem nastavil border na 0 a všude, kde to šlo jsem dal transparentní barvy. Border zmizel, ale objevil se problém. Když mám někde Message Box, který se objeví po kliknutí na takové tlačítko, tak je kolem tlačítka slabý bílý background. Jakmile odkliknu messageBox tak je vše v pořádku, ale do té doby je tam bílý border.
Dej sem snímek.
Jedná se o spodní zelené tlačítko. Na 1. obrázku je to tak, jak má být a na druhém je vidět ta chyba.
Před otevřením messageboxu zavolej this.Focus()
Nepomáhá :(
Tak by mohlo pomoct tohle:
http://dotnetstep.blogspot.cz/2009/06/remove-focus -rectangle-from-button.html
Po kliknutí na tlačítko to tlačítko získalo focus - preto je zvýraznené. Ako sa toho zbaviť nepoviem, lebo C# (platformu .NET) neovládam...
Edit:
Vytvor si vlastnú triedu:
Keď použiješ vyššie upravenú triedu tlačítka, nebudeš mať po kliknutí ten obdĺžnik.
Když jsem tuhle třídu připojil k programu, tak se aplikace vůbec nespustí..
Co znamená nespustí?
Neobjeví se ani jeden Form. V procesech ale běží. Teď jsem to zkusil podle článku a aplikace běží, ale efekt je zde pořád. Abych se přiznal, tak s třídami neumím vůbec pracovat. Vím, že to je jedna z nejdůležitějších věcí, ale nás to prostě nikdo neučí. Vařím tedy opět z vody.
Vytvořil jsem novou třídu (pravým tlačítkem na projekt .. Add.. class.. ), do které jsem vložil: (z článku)
To, co se mělo ale objevit u vlastností tlačítka se neobjevilo..
Ještě musíš ty tvoje Buttony změnit na CustomButtony.
A dokud se budeš omezovat na věci, které vás někdo učí, tak nebudeš umět nic. Pokud chceš něco umět, tak se to z 95 % budeš muset naučit sám.
A to udělám jak, pokud se mohu ptát?
... nechystám se být programátorem. Je to prostě projekt do školy..
Všude kde máš nějaký Button, tak ho přepiš na CustomButton.
To, co jsem psal, ale neplatí jenom pro programování.
Omlouvám se, ale netuším, kde to mám přepsat.
Ve zdrojovém kódu, kde jinde?
Já opravdu nevím, co tím myslíš. Buttony přece vytvářím v Designu, takže je nikde napsané nemám. Zkoušel jsem to upravit v Designer.cs, ale tam to píše chybu..
Jakou chybu?
Vůbec to nezná "CustomButton". Nechme to tak, jak to je.
Děkuji za rady.