Problém s Hide() u MDI formulářů   zodpovězená otázka

C#, WinForms

Dobrý den,

mám problém s přepínám MDI formulářů. Pokud MDI formulář schovám pomocí Hide(), tak jej už nemohu zobrazit.

foreach (Form f in this.MdiChildren) {
   if (f.GetType () == frm.GetType ()) {
      if (this.ActiveMdiChild != null) {
         this.ActiveMdiChild.Hide ();
      }
   ActivateMdiChild (f);

   //zkoušel jsem i následující:
   //f.Show ();
   //f.BringToFront ();
  }
}

Funkci Hide() používám, aby nebyl vidět nepříjemný efekt, kdy se jeden formulář zmenšuje a druhý se přes něj zobrazuje, pokud jsou již formuláře v kolekci MdiChildren. Teoreticky by stačilo, kdyby mi někdo poradil jinou variantu přepínání.

Předem děkuji za rady.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To, čo je v MDI Child formulári prerobiť do user control(zmeniť 2. riadok vo form.designer.vb na "Inherits UserControl" a zmazať určenie vlastností, ktoré má Form a UserControl nemá, čo zistíte podľa object browseru)a tie dať do jedného tabcontrol.A bude možné prepínať medzi jednotlivými položkami bez toho, aby sa jeden zmenšoval a cez neho zobrazoval druhý.O tom, ako skryť záhlavie tabcontrol sa tiež písalo v inom vlákne tu na vbnet -e .

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

NIKDY neměňte kód vytvořený Visual Studiem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je na to nejaký obzvlášť dôležitý dôvod? Nič by sa nestalo, keby som na hotovom formulári urobil horepopísanú vec, 2x nič keby som takto z UserControlu spravil Form.

Prípadne máte nejakú nepríjemnú skúsenosť s úpravami kódu vytvoreného VS? Myslím si, že keď človek VIE čo robí, tak nie

je čo zničiť. A stretol som sa už aj s prípadom, keď tam VS napísalo vec, ktorú samo po sebe nevedelo prečítať(pričom v kóde nebola chyba - dal sa preložiť) a zásahom do kódu bolo možné obnoviť funkčnosť designéru.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejde o to, že když v tom něco změníte, nebude to fungovat.

Jde o to, že soubory s příponou .designer.vb vám Visual Studio při jakékoliv změně v design režimu přepíše.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Väčšinu vecí prepisuje ale zrovna tú úpravu na usercontrol by neprepísalo.Alebo napríklad keď zmeníte ClientSize tak to neprepíše.A keď niečo prepíše, tak ešte stále môžem dorobiť posledné zmeny v UI a následne sa vyvarovať použitiu Design režimu.

A na nezaplatenie je to keď si tam VS napíše niečo, čomu nerozumie(alebo skôr nechce rozumieť).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

U malé aplikace typu Hello World je to možné, ale u čehokoliv většího se bez designeru neobejdete.

Měnit soubory designeru je blbost, když už to chcete dělat, tak to aspoň neraďte ostatním.

To, co popisujete, se typicky řeší jinak.

Z čeho formulář dědí se dá nastavit a ClientSize můžete nastavit metodou SetClientSizeCore, jestli chápu, o co jde. Neexistuje jediný rozumný důvod, proč měnit něco ve vygenerovaném kódu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč máte potřebu měnit toto standardní chování oken? Zaděláváte si tím na problémy, které vás budou stát více usilí, než vyřešení toho "problému".

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Nezdá se mi, že by takové chování bylo standardní. Aspoň nevím o žádné MDI aplikaci, která by takhle ošklivě přepínala okna.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je to zcela normální chování, neřešte takové hovadiny, nebo v tom naděláte bordel. Věnujte se raději odlaďování a optimalizaci, takové hovadiny v uživatelském rozhraní jsou až na posledním místě.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback