Diskuze: přepínání formulářů
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Třeba pomocí něco takovéhleho:
void MetodaPriKliknuti()
{
this.Visible = false
var dialog = new Form2();
dialog.Show();
this.Visible = true;
}
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) )
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();
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.
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();
}
Zobrazeno 6 zpráv z 6.