Avatar
Tom Blechy
Člen
Avatar
Tom Blechy:

neví tady někdo jak přepnout mezi sebou dva formuláře tak aby z prvního na druhý se první zkryl, pak druhý zavřel a první se objevil se stejnými daty jako byl zavřen a neobnovil se úplně od nuly?

 
Odpovědět 9. března 10:54
Avatar
Odpovídá na Tom Blechy
Ondřej Štorc:

Třeba pomocí něco takovéhleho:

void MetodaPriKliknuti()
{
this.Visible = false
var dialog = new Form2();
dialog.Show();
this.Visible = true;
}
Nahoru Odpovědět  +1 9. března 11:13
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Tom Blechy
Člen
Avatar
Tom Blechy:

noo to mi dělá to co přesně nechci aby to dělalo, ale (omlouvám se za formulaci problému) ve zkutečnosti mám formuláře 3 dá se to předělat na dva ale momentálně mám 3, vysvětlim problém, mám okno ve kterém se mi mění hodnoty podle smáčknutí tlačítka na určité hodnotě čekněme 5 se mi má zapnout další formulář a ten s hodnotami se má skrýt, zneviditelnit, zablokovat, prostě aby nebylo možné v něm dále pracovat, poté se spustí další formulář s více tlačítky kde se odečítají hodnoty kterými se opět načte třetí formulář který po smáčknutí tlačítka má spustit první formulář,* ve kterém jsou ale stále ty hodnoty které tam byly..*.
což přesně tyhle příkazy neudělají protože sice otevřou ten formulář ale vynulovaný...

mám to také metodou new ale myslím že přesně to tam dělá neplechu, chtěl bych se proto zeptat, jestli netušíte jak ten formulář po případě v tom prvním vypnout tlačítka a tím třetím ty tlačítka zas zapnout nevadí když to bude vidět, stačí, když bude nějakým způsobem znemožněno v ovládání prvního formuláře, než se zavře třetí formulář...
(na prvním formuláři mám form2 form = new form2(); form.show(); Hide();
na druhém form3 form = new form3(); form.show(); Close();

a na třetím nevím co nastavit aby se mi zobrazil první formulář s daty co v něm byla (opravdu myslím že za to může to new) ale nevim čim by to šlo nahradit) )

 
Nahoru Odpovědět 9. března 16:40
Avatar
jt.e
Člen
Avatar
jt.e:

Tvůj příběh je moc dlouhý na to, aby se ho snažil pochopit. Ale na základě poslední části myslím, že k řešení tvého problému by mělo stačit vytvořit (po vytvoření rodičovského okna) pomocí new okno, které bude součástí hlavního okna (globálně) a to otevírat pomocí Show nebo ShowDialog a pouze zavírat, ale nelikvidovat.

public partial class Form1 : Form
    {
        private Form2 dlg;
        public Form1 ()
        {
            var dlg = new Form2();
        }

        private void Otevri()
        {
         dlg.ShowDialog();
Editováno 9. března 17:20
 
Nahoru Odpovědět 9. března 17:17
Avatar
Petr Čech (czubehead):

Pokud to nemusí být přímo různé formuláře, můžeš dát přes sebe v 1 formu několik panelů, z nichž by každý reprezentoval obsah 1 okna. Musíš to ale udělat tak, aby se ti ty panely nevložily do sebe, takže každý z nich přetáhneš kousek vedle od těch ostatních a ve vlastnostech mu nastavíš stejnou pozici jako ostatním.
Jinak na tohle je mnohem lepší WPF, pokud nemáš specifický důvod dělat ve Winforms, měl bys uvažovat o přechodu, usnadňuje to spoustu věcí ;-) Jinak WPF je novější a má nahradit deprecated Winforms.

Nahoru Odpovědět  +2 9. března 18:11
Why so serious? -Joker
Avatar
ostrozan
Redaktor
Avatar
ostrozan:

Souhlas s czubehead co se týče WPF
ale i když je tvá konstrukce poměrně krkolomná - co svědčí spíš o špatném návrhu tak ohledně otvírání a zavírání oken aby to fungovalo jak ty chceš by to mělo vypadat nějak takhle:

v hlavnim formuláři:

private otevriForm2()
{
//vytvoreni okna 2
Form2 form2=new Form2();

//minimalizuje okno 1
this.Hide();

//otevre okno 2 jako dialogove - s oknem 1 se neda manipulovat
form2.ShowDialog();

//zde pokracuje po zavreni okna 2
//kdyz se pred tim zavrelo okno 3
//otevre zpet okno1
this.Show();

//okna 2 a 3 jsou zavrena , okno 1 opet aktivni
}

ve formuláři Form2

private otevriForm3()
{
//vytvoreni okna 3
Form3 form3=new Form3();

//minimalizuje okno 2
this.Hide();

//otevre okno 3 jako dialogove - s oknem 1 ani 2 se neda manipulovat
form3.ShowDialog();


//zde pokracuje po zavreni okna 3
//zavre okno 2 a skoci do metody "otevriForm2()"
//hned za volani metody "form2.ShowDialog();"
this.Close();
}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 9. března 18:38
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 6 zpráv z 6.