[vb.net] leveling forms (topmost)

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
Ik heb 3 forms, waarvan 2 een toolbox zijn voor de andere form. De bedoeling is dat de 2 forms in weergave rangorde hoger staan dan de mainform. met de property 'topmost' werkt het wel, maar..

het niveau verschil van de 2 toolboxxen beperkt zich niet alleen tot de applicatie maar ook bij andere openstaande applicaties. Dus bv. wanneer ik mijn applicatie open heb staan en daarna internet explorer open dan blijven die 2 toolboxxen dus ook boven internetexplorer staan.

Wat ik zou willen is dat ik aangeef dat de rangorde van de twee toolboxxen 1 stap hoger is dan die van de form, en dus niet als topmost. Ik kon hier geen functie/ methode/ property voor vinden of ik heb de goeie engelse zoekterm niet gebruikt.

Dus ook in gebruik van minimized en maximized blijven de twee toolboxen topmost

edit: ik kan geen MDI gebruiken

[ Voor 11% gewijzigd door toost op 08-05-2006 15:54 ]

This space for rent. Serious inquiries only please.


  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

is een modeless dialog geen oplossing ipv van een topmost form?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23:40
Hebben die dingen een Z-index ? Misschien kun je daar wat mee'.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
modeless dialog heb ik nog niet eerder van gehoord, ik zal er eens op googlen, bedankt.
En die z-index ken ik alleen uit de html, heb geen idee of die ook in vb.net forms zit, zal daar ook eens naar kijken thnx

z-index zit niet in .net:


Q Are the SendToBack and BringToFront methods the only options for modifying the z-order of Windows® Forms controls?


A It took a suggestion from one of my buddies at Microsoft to figure this stumper out. Of course, it's pretty simple once you know how to do it.There is no property on a Windows Forms control to manipulate z-order as there was in previous versions of Visual Basic® (ZOrder).

[ Voor 51% gewijzigd door toost op 08-05-2006 16:28 ]

This space for rent. Serious inquiries only please.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
CyBoB schreef op maandag 08 mei 2006 @ 16:11:
is een modeless dialog geen oplossing ipv van een topmost form?
Je bedoelt een Modal Form. Dat heeft dan wel weer als nadeel dat, eens die form open staat, je 'm eerst moet afsluiten vooraleer je aan de onderliggende forms kunt.
z-index zit niet in .net
Nee, maar je kan evt wel die BringToFront en SendToBack methods gebruiken;

[ Voor 15% gewijzigd door whoami op 08-05-2006 16:32 ]

https://fgheysels.github.io/


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
in dat geval valt modal form gelijk af, ik zal eens naar die BringToFront en SendToBack methods kijken.

edit:

BringToFront werkt half. Zodra ik iets wil gaan invoeren in de richtextbox (op de form) verdwijnen allebei de toolboxen.

Dus moet de BringToFront aan een event gekoppeld worden.
Ik heb er een aantal geprobeerd, ik zou eigenlijk een event moeten hebben die ziet of er op de form wordt gewerkt, zoja dan BringToFront, maar dan eenmalig en niet elke keer zoals bij een textchanged event.

De toolboxxen moeten dus naast de form werken, zoals toolboxxen in photoshop.

edit2:

Bij bringtofront is de toolbox ook gelijk geselecteerd, en zodra ik dan weer in de rtb klik gaatie weer weg, wil je dit opvangen met bringtofront blijft de toolbox geselecteerd waardoor je in je rtb niks kan doen, lijkt me dus ook geen oplossing :(

[ Voor 112% gewijzigd door toost op 08-05-2006 16:51 ]

This space for rent. Serious inquiries only please.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23:40
Hmm, in Win32 heb je een SWP_NOACTIVATE vlag, misschien in .Net ook?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
nope die is er niet meer :(

edit:

hoe roep je het event aan wanneer het programma openstaat maar niet geselecteerd is, dus bv. wanneer je internet explorer over de applicatie heen heb staan?

Ik kan iig in dat event (als het er is) de topmost op false zetten.

[ Voor 82% gewijzigd door toost op 08-05-2006 17:28 ]

This space for rent. Serious inquiries only please.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
't Is niet omdat die niet direct beschikbaar is, dat je'm daarom niet kunt gebruiken.
Je kan wel een call maken naar de api - method SetWindowPos, mbhv DLLImport.

code:
1
2
3
4
5
[DLLImport ("user32.dll", EntryPoint="SetWindowPos")]
public static extern bool SetWindowPos ( int hWnd, 
    int hWndInsertAfter, int X, int Y, int width, int height, uint uFlags);

const unit SWP_NOACTIVATE = 0x10;


en dan gebruik je die,
code:
1
SetWindowPos ((int)form1.Handle, -1, 0, 0, 0, 0, SWP_NOACTIVATE);


Niet getest.

https://fgheysels.github.io/


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
dat gaat mijn kennis te boven, maar daar ga ik morgen eens naar kijken.

Wat ik iig nu wel heb is dat de toolboxxes op het moment van minimized weg zijn:

code:
1
2
3
4
5
6
7
8
9
10
    Private Sub test123(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
        If Me.WindowState = FormWindowState.Minimized Then
            FForm4.TopMost = False
            FForm5.TopMost = False
        End If

        If Me.WindowState = FormWindowState.Maximized Then
            FForm4.TopMost = True
            FForm5.TopMost = True
        End If


wat ik nu nog zou moeten hebben is dat wanneer er ge'alt-tabbed' wordt de topmost ook op false gaat, maar hoe kan je dit afvangen?

This space for rent. Serious inquiries only please.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Hmm, toch ff getest. Dat heeft hetzelfde effect als een window topmost maken.

Kan je dat window gewoon niet topmost maken, en als je applicatie niet actief is, of je 'main-window' de focus niet heeft, dat specifieke window niet topmost maken, en eens je app terug actief is, die TopMost flag terug op true zetten ?

https://fgheysels.github.io/


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
ja precies dat wil ik dus als 'noodoplossing' (zie mijn laatste bericht) ik kan alleen geen event vinden wat op mainform = actief lijkt

This space for rent. Serious inquiries only please.


  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Normaal krijg je een WM_ACTIVATE als een window geactiveerd/gedeactiveerd wordt. Je zou deze kunnen afvangen in je WndProc, maar volgensmij doen de Activated en Deactivated events hetzelfde.

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

ik wil niet irritant zijn, maar heb je al eens gekeken op de FormBorderStyle property ?
daarme kan je precies instellen wat jij wil!

ASSUME makes an ASS out of U and ME


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
als het precies is wat ik wil, dan ben je zeker niet irritant, ik zal er eens naar kijken

edit:

het is inderdaad activated en deactivate, dat ik daar overheen heb gekeken :S, maar bij activated gaat tie elke keer alstie actief is dus de event uitvoeren daar moet ik dan weer iets op verzinnnen.

Ik zie trouwens bij formborderstyle niet de oplossing voor mijn probleem. Kan je eens vertellen wat je bedoelt?

[ Voor 65% gewijzigd door toost op 08-05-2006 20:06 ]

This space for rent. Serious inquiries only please.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
HIGHGuY schreef op maandag 08 mei 2006 @ 19:53:
ik wil niet irritant zijn, maar heb je al eens gekeken op de FormBorderStyle property ?
daarme kan je precies instellen wat jij wil!
Tja, je kan een formstyle als border-style instellen, maar dat venster blijft niet top-most.

https://fgheysels.github.io/


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

ik dacht dat het instellen van bvb SizableToolWindow er ook voor zorgde dat het ding erbovenop bleef.

na even te MSDN'en zie ik dat je van je toolboxen owned forms moet maken:
Visual Basic .NET:
1
2
Me.AddOwnedForm FForm4
Me.AddOwnedForm FForm5


http://msdn2.microsoft.co...orms.form.ownedforms.aspx

[ Voor 3% gewijzigd door H!GHGuY op 09-05-2006 08:51 ]

ASSUME makes an ASS out of U and ME


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:33
Hmm, cool, dat werkt idd. Wist ik niet.
Ik had ook eerst eens ff gekeken naar die FormBorderStyle, en ik had ook verwacht dat dat al voldoende was om het gewenste resultaat te leveren; die AddOwnedForm had ik nog nooit bekeken, maar dat doet het idd.

https://fgheysels.github.io/


  • toost
  • Registratie: Januari 2002
  • Laatst online: 30-01-2025
inderdaad, ik heb gisterenavond zelf nog zitten kutten met owner en dit is voldoende:

code:
1
2
3
4
            FForm4.Owner = Me
            FForm4.Show()
            FForm5.Owner = Me
            FForm5.Show()


en dan geen topmost meer aan en alles werkt perfect. Mannen bedankt weer!

This space for rent. Serious inquiries only please.

Pagina: 1