[C#] Refresh() / Zavření aktivního Formu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

[C#] Refresh() / Zavření aktivního Formu – .NET – Fórum – Programujte.com[C#] Refresh() / Zavření aktivního Formu – .NET – Fórum – Programujte.com

 

laky9410
Duch
8. 2. 2014   #1
-
0
-

Dobrý den,
v programování v c# nejsem nějak extra zběhlý a při vytváření jedné aplikace jsem narazil na několik (2) problémů které bych potřeboval vyřešit.
1) Mám formulář na kterém se nachází panel na němž se vykreslují nějáké obrázky.
Ve formuláři mám přes událost paint zařízeno "zvýrazňování" labelů (resp. přes události
MouseEnter a MouseLeave na labelu je pod ním vykresluje obrázek a zas mizí...) problém je
že v událostech MouseEnter i MouseLeave mám příkaz Refresh(); který refreshne celý
formulář což zapříčiní že obrázky v vykreslené v panelu "probliknou" a celkem dost mi to vadí
a nevím co stím dělat. DoubleBuffer mám na true ale nepomáhá.
resp. Jak mám udělat aby se refreshla jen událost paint na formu a né i na panelu ? popřp.
nejde někde na panelu nastavit aby "nedědil" vlastnosti formu nebo tak něco ?

2) V aplikaci mám přechody meziformuláři řešeny přes příkazy show a hide (resp. jeden se
skryje a další se otevře) a ten skrytý běží furt na "pozadí" akorát není vidět...
resp. Jak mám zavrít jeden formulář a vyvolat jiný ?

Předem děkuji za odpovědi.

Nahlásit jako SPAM
IP: 188.120.205.–
RePRO0
Super člen
9. 2. 2014   #2
-
0
-
Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
laky9410
Duch
9. 2. 2014   #3
-
0
-

#2 RePRO
Mno DoubleBuffer mám zalpý na celém formu... doufám resp. kam bych měl  tohle napsat ? 

class Canvas : Control {
    public Canvas() { DoubleBufferred = true; }
}

2) Ok to by snad mělo fungovat ale mám ještě jeden dotaz nejsem si ůplně jistej jak příkaz hide() funguje resp. mám 2 formuláře mezi kterejma jde přepínat... a když přejdu z prvního formu do druhýho tak a schovám ten první a vyvolám ten druhej... a když pak chci přejít zas z druhýho formu na první tak schovám ten druhej a vyvolám ten první.. a ten první co jsem teď vyvolal (při přechodu z formu2 do formu1) jakoby nahradí ten form1 co jsem dříve schoval ? nebo nenahradí a otevře se jakoby znova form1 a ten původní form1 furt běží na pozadí skrytej ?

Nahlásit jako SPAM
IP: 188.120.205.–
RePRO0
Super člen
9. 2. 2014   #4
-
0
-

#3 laky941
1] Je úplně jedno, kam se to napíše.

2] Co je myšleno pod pojmem nahradí?

Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
laky9410
Duch
9. 2. 2014   #5
-
0
-

1) předělal jsem ten to a místo panelu jsem použil imagebox a už to nebliká

2) mno nvm přesně jak to popsat... mno řekněme že mám 2 formy form1 a form2.

na formu1 je tlačítko kretý zapříčíní že se ukáže form2 [ "show()" ] a zárověň se se skryje form1 [ "hide()" ]

=> takže teď mám aktivní form2 a form 1 neni vidět... na "form2" mám tlačítko zpět na které když kliknu tak ukáže form1  [ "show()" ] a skryje form2  [ "hide()" ] .

A zajímalo by mě co sřesně se stane když kliknu na to tlačítko "zpět" ve formu2... jasně skryje se form2 a zobrazí form1 ale ten form1 co se zobrazil ja jakej ?

 Je to jakoby ten samej form1 co jsem skryl když jsem vyvolával form2 ?

A nebo ten form co jsem skryl při vyvolávání formu2 furt běží skryt na pozadí a kliknutí na tlačítko zpět se vyvolal jakoby nový form1 ? (takže by mi jakoby najednou běžel 2x form1 jeden co by šel vydět a druhý co by běžel skryt napozadí)

Nahlásit jako SPAM
IP: 188.120.205.–
laky9410
Duch
9. 2. 2014   #6
-
0
-

resp. ve formu1 (FormMenu) jedna mám:
 

private void label_Tlacitko_Nova_Hra_Click(object sender, EventArgs e)
{

FormHra FormHraPrepnuti = new FormHra();
FormHraPrepnuti.Show();
Hide();
}

A ve formu2 (FormHra) pak
 

private void label_Tlacitko_Zpet_Do_Menu_Click(object sender, EventArgs e)
{
FormMenu FormMenuPrepnuti = new FormMenu();
FormMenuPrepnuti.Show();

Hide();
}


a obávám se že toto přepínání způsobuje že nakonec by mi mohlo na pozadí běžet klidně i 100 formulářů...

Nahlásit jako SPAM
IP: 188.120.205.–
RePRO0
Super člen
10. 2. 2014   #7
-
0
-

Ano, takto jak to teď máme, tak se může opravdu zapříčinit to, že poběží na pozadí x formulářů (objektů) - což je fail pro paměť a aplikace by brzy zkolabovala - což nechceme.

My tedy chceme a potřebujeme, aby se nám držely dvě instance a to je celé. Není to příliš složité, jak jsem poznamenal, tak teď těch instancí může být x a to z toho důvodu, že voláme operátor new (vytvoření nové instance - formuláře) v té události Click (to tedy ideální není). Nám stačí si ukládat (vytvořit) ten odkaz (FormHraPrepnuti a FormMenuPrepnuti) třeba v konstruktoru a máme vystaráno. Pro ukázku:

public class MojeHerniTrida
{
    protected FormHra FormHraPrepnuti;

    public MojeHerniTrida()
    {
        FormHraPrepnuti = new FormHra();
    }
}

Rozumíme si?

 

Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
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, 13 hostů

Podobná vlákna

Refresh formu — založil Eversmann

Jak zakázat zavření formu — založil Nikeed12

 

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