Topmost pouze v rámci aplikace   zodpovězená otázka

VB.NET, WinForms

Zdravím,

potřebuji nastavit u formuláře s vyhledáváním, aby zůstával vždy navrchu v rámci aplikace, dokud jej uživatel nezavře sám. problém je v tom, že když u formuláře nastavím topmost=true, zůstává vždy navrchu, i když přepne uživatel do jiné aplikace. Pokud mám topmost=false, tak se při přepnutí do hlavního formuláře vyhledávací formulář zneviditelní.

Můžete mi někdo prosím poradit, jak nastavit vlastnosti formu?

Díky

M.

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

Nastavením TopMost bude formulář vždy navrchu v rámci všech oken v systému. Musíte použít vhodnou kombinaci událostí Activated/Deactivated u formulářů a metody BringToFront u formuláře, který chcete zobrazit navrchu v rámci aplikace.

Edit: Bohužel jsem po chvíli experimentování zjistil, že tímto způsobem to nepůjde. Tento problém mi přišel natolik zajímavý, že se ho budu dále snažit vyřešit a pokud na něco přijdu, napíšu to sem.

Edit2: Vyřešeno! Po chvíli zkoumání MSDN a experimentování s testovací aplikací jsem napsal snippet, kdyby se to náhodou hodilo ještě někomu.

http://vbnet.cz/snippet--61-formular_vzd...

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

Super! díky moc, funguje to bezvadně

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

Když zobrazujete to dceřiné okno, tak použijte dcerine.Show(rodicovskeOkno);

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

To nemá nic společného s tím, aby bylo okno vždy navrchu!

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

Zdravim,

zkus te: Form.ShowDialog() /// misto form zadejte nazev vaseho formulare

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

Absolutně nemáte tušení o čem mluvíte...

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

Dobry den,

Nebudte absolutne arogantni! snazil jsem se pomoci, je pravda ze ted programuju v C# a VB .Net jsem nevidel 5 let, ale vim ze v C#

funguje kod:

Form2 frm2 = new Form2();

frm2.ShowDialog();

A nez mi napisete zas nejaky komentar tak si tento kod vyzkousejte!

Pokavad zapne form2 (coz je u neho vyhledavaci pole) tak bude toto pole v ramci formu1(hlavni aplikace) nahore, dokavad tento form nezavre, ale rikam ze se mohu milit, muze to byt ve VB jinak. Ale i tak muze te napsat slusne ze toto reseni nebude fungovat!

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

A pokavad chce mit pri aktivaci formu1 aktivovan i form2, mohl by pouzit kod:

Private Sub Form1_Activated....

Form2.Activate()

Kdykoliv aktivuje form1 tak se aktivuje i form2

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

Opět dokazujete jen svojí tupost, protože objekty v C# i VB.NET jsou naprosto stejné (oboje využívá .NET Framework), drobně se liší pouze syntaxe obou jazyků. Ano, ShowDialog zobrazí formulář vždy navrchu v rámci aplikace (což je logické, to ví každý), ale nikdo zde nemluvil o MODÁLNÍCH formulářích! Postup má fungovat obecně pro jakýkoliv formulář. Víte vůbec co je to modální formulář? Zřejmě ne. Mimo to váš kód způsobí, že se nikdy nepůjde přepnout do Form1, bravo. A opět demence v podobě volání instančních metod staticky, bez komentáře...

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

Principiálně ShowDialog dělá podobnou věc, ale zablokuje okno, které ho vyvolalo, takže to není to, co tazatel potřebuje.

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