C#_windows_form – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C#_windows_form – .NET – Fórum – Programujte.comC#_windows_form – .NET – Fórum – Programujte.com

 

marros11
~ Anonymní uživatel
12 příspěvků
6. 2. 2009   #1
-
0
-

Dobry den,

mam jeden maly problem. Potreboval bych poradit s Formulari a jejich spravou. Mam Form1, kde mam na horni liste menu (Soubor, upravy, atd...) a podmenu v souboru mam Form2. Nevim ale jak mam naprogramovat aby po kliknuti na Form2 v menu se mi zobrazil tenhle formular (Form2). Nechci zavrit Form1, jenom at je v pozadi, a Form2 at je aktivni a muzu vnem pracovat.
Vedel by nekdo poradit?
Dekuji.

Nahlásit jako SPAM
IP: 80.188.28.–
Chrasty
~ Redaktor
+4
Posthunter
6. 2. 2009   #2
-
0
-

Je to jednoduché

Form2 f2 = new Form2();

f2.Show();

Nahlásit jako SPAM
IP: 193.179.196.–
marros110
Newbie
7. 2. 2009   #3
-
0
-

To Chrasty :
Parada!!! zapomnel jsem si vytvorit instanci tridy Form2 f2... Jak proste :)

BTW, pokud ted prepinam formulare mezi sebou tak mi porad vyskakujou nova okna. Lze to resit tak ze budu vzdy uzavirat (Application.exit()) kazdy formular po prechodu do noveho okna, nebo se to resi jinak? Jak? :)

Dekuji.

Nahlásit jako SPAM
IP: 89.102.250.–
Chrasty
~ Redaktor
+4
Posthunter
7. 2. 2009   #4
-
0
-

Nevím, jestli tě úplně chápu. Myslíš to tak, že už máš vedle sebe otevřené dva formy a teď chceš pomocí tlačítka přepínat, které okno je aktivní? Tak k tomu je metoda Activate. Pokud z hlavního formu zavoláš třeba form2.Activate(), tak to form2 dostane focus.

Nahlásit jako SPAM
IP: 193.179.196.–
marros110
Newbie
8. 2. 2009   #5
-
0
-

Mam namysli, ze mam treba tlacitko na Form1 a kdyz na nej kliknu, tak se zobrazi Form2. Na Form2 mam tlacitko a kdyz jej zmacknu tak se zavre Form2 a focus bude zpatky na Form1. Rozdil je vtom ze Form1 je porad zobrazeny (jako hlavni okno) a Form2 se objevi/zmizi po stlaceni tlacitka.
Zkousel jsem to pres f2.Activate(); ale to nejede, nic to nedela. Uz me lepe chapes?
Dekuji.

Nahlásit jako SPAM
IP: 89.102.250.–
Chrasty
~ Redaktor
+4
Posthunter
8. 2. 2009   #6
-
0
-

Konstruktor Form2 nastav tak, aby přijímal argument typu Form a ve Form1 při vytváření instance Formu2 předaj odkaz na Form1 pomocí this. Tím se můžeš ve Formu2 odkázat na Form1 a zavolat Activate a bude to fungovat tak jak má:)

Případně, pokud nepotřebuješ pracovat s oběma formuláři naráz, zvaž použití ShowDialog() místo Show() - pak se ten form chová jako nějaký MessageBox a po jeho zavření dostane hlavní okno focus automaticky.

Nahlásit jako SPAM
IP: 193.179.196.–
marros110
Newbie
10. 2. 2009   #7
-
0
-

To Chrasty :
Stale mi to nefunguje i presto ze mi staci ta varianta dve kdy nepotrebuju pracovat soucasne na dvou formularich.... Nechme to uz tak... zkusim pohledat jeste v odborne literature, snad to nekde najdu.... Dekuji za tvuj cas Chrasty!

Nahlásit jako SPAM
IP: 80.188.28.–
Pebble0
Návštěvník
10. 2. 2009   #8
-
0
-

marros11 napsal:
To Chrasty :
Parada!!! zapomnel jsem si vytvorit instanci tridy Form2 f2... Jak proste :)

BTW, pokud ted prepinam formulare mezi sebou tak mi porad vyskakujou nova okna. Lze to resit tak ze budu vzdy uzavirat (Application.exit()) kazdy formular po prechodu do noveho okna, nebo se to resi jinak? Jak? :)

Dekuji.



Pokud to dobře chápu, vyskakujou ti stále nový formuláře (při zavolání form1 z form2 ti vyskočí novej formulář a máš tam 3).

Buď se to dá řešit tím, že při přechodu zavoláš Form2.Hide(), nebo zkus řádek, kde vytváříš novou instanci přesunout z menu jinam a do menu pod form2 dát jenom řádek na ukázání (pokud to tak už nemáš).

Nahlásit jako SPAM
IP: 83.208.77.–
marros110
Newbie
10. 2. 2009   #9
-
0
-

To Pebble :
Ahoj, stale mi to nejde... Predvedu jak postupuju:

Ve Form1 mam udalost:
private void menu_Pridej_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(); //vytvorim instanci f2
f2.ShowDialog(); // zobrazim jako dialog, dle Chrastyho vyse v prispevku to tak psal....
}

pak ve Form2 mam tuhle udalost:

private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(); //vytvorim instanci
f2.Hide (); // a chci ji zavrit.
}

Ve vysledku se chci dostat zpatky na Form1. Ale nejak to nejde....

Nahlásit jako SPAM
IP: 80.188.28.–
Pebble0
Návštěvník
10. 2. 2009   #10
-
0
-

To marros11 : U toho druhýho formuláře musíš dát

Form1 f1=new Form1(); //vytvoří instanci formuláře 1.typu
f1.Show(); //ukáže jí
this.Hide(); //schová aktuální formulář typu 2

u typu 1 zadáš to samý :

Form2 f2=new Form2(); //vytvoří instanci formuláře 2.typu
f2.Show(); //ukáže jí
this.Hide(); //schová aktuální formulář typu 1

budeš mít otevřenej vždycky jenom jeden formulář, potíž je v tom, že se zbytečně tvoží nový instance, pokud budeš chtít v těch formulářích uchovávat nějaký data, bude to o dost složitější

Nahlásit jako SPAM
IP: 83.208.77.–
marros110
Newbie
10. 2. 2009   #11
-
0
-

To Pebble :
Parada, works!

Zatim nepotrebuju uchovavat data na formulari, pac vsechno ukladam do souboru, takze zatim to staci takhle.

Dekuji mooc...

Nahlásit jako SPAM
IP: 80.188.28.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 27 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý