Toon posts:

[VB.net] Meerdere forms in 1 groot

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig een applicatie te schrijven die uit meerdere forms bestaat.
Ik zou dus graag een soort MainForm hebben met bovenaan een menutje, en telkens ik op een menu-item klik moet de juiste subForm verschijnen. De subForm moet dan wel de juiste afmetingen hebben zodat hij de gehele oppervlakte van de MainForm inpakt.

Ik heb dit al eens geprobeerd met MDI maar het positioneren van die subForms loopt voor geen meter,iemand die een simpele oplossing kent?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
Je 'subforms' moet je wel als MDI childs creeëren, en wat betreft de positionering, je Form heeft daar ook een property voor.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Dat lukt nu tot hiertoe, maar telkens ik een ander form open in de parent staat die iets meer naar rechts en naar onder

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 21 november 2005 @ 18:54:
Dat lukt nu tot hiertoe, maar telkens ik een ander form open in de parent staat die iets meer naar rechts en naar onder
Dat is "by design" en hoort dus zo in een MDI. Niks geks hoor.
Je zou je forms kunnen positioneren middels de .left en .top properties (bij het _Load ofzo) of (IMHO mooier) bij het sluiten ( _Closing) de positie opslaan waar het form zich bevond en het dan (wederom in het _Load event ofzo) weer positioneren met de opgeslagen waarden.

[ Voor 10% gewijzigd door RobIII op 21-11-2005 19:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Alle forms die ik er ga inladen zijn even groot en overlappen elkaar telkens, beetje te vergelijken met een website waarbij je de pagina's in een ander frame laad. Bestaat er echt geen simpele manier om die gewoon een vaste positie te geven?

FilmWijzigen.MdiParent = Me
FilmWijzigen.Top = 0
FilmWijzigen.Left = 0
FilmWijzigen.Show()


Als ik hem bij het openen dit meegeef moet hij toch mooi weer links tegen de rand staan?

[ Voor 32% gewijzigd door Verwijderd op 21-11-2005 19:04 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 21 november 2005 @ 19:00:
Alle forms die ik er ga inladen zijn even groot en overlappen elkaar telkens, beetje te vergelijken met een website waarbij je de pagina's in een ander frame laad. Bestaat er echt geen simpele manier om die gewoon een vaste positie te geven?
De .top en .left zetten :?
Visual Basic .NET:
1
2
        Me.Top = 10
        Me.Left = 10

[ Voor 9% gewijzigd door RobIII op 21-11-2005 19:05 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:48

Rhapsody

In Metal We Trust

Kun je eens met een screenshot verduidelijken wat je probleem precies is?

🇪🇺 pro Europa!


Verwijderd

Topicstarter
http://users.pandora.be/devilex/mdi.JPG

Ik heb nu 3 keer een nieuwe form geopend en iedere keer staat die iets maar naar rechts en naar beneden

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
Dat is standaard windows design.
Als je zelf de top en left properties zet, dan moet je er wel voor zorgen dat je dat doet nadat windows je form getoond heeft. Ik denk dus dat je Create event niet de goede is om dat te doen.
(En waarom zou je dat trouwens willen doen ? )

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik weet niet wat juist de beste oplossing is.
Ik wil gewoon dat wanneer ik op een item in het menu klik de gepaste vorm opent, en aangezien ik al die forms dezelfde afmetingen meegeef zou ik graag hebben dat ze mooi weergegeven worden

Verwijderd

Topicstarter
Bestaat er dan geen eenvoudiger oplossing dan die DMI? Er moet toch iets bestaan om van in een hoofdform te kunnen navigeren door subforms?

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 23:48

Rhapsody

In Metal We Trust

en als je de windowstate eens op maximized zet? (van je child)

🇪🇺 pro Europa!


Verwijderd

Topicstarter
Da gaat maar dan zit ge daar boven met die dubbele balk die lelijk in de weg staat

  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Toch is dat wel de oplossing. Die balk kan je helemaal wegkrijgen. Ik heb het ook gedaan, dat was ook m'n eerste windows forms project, dus met een beetje initiatief kan je dat best zelf oplossen.

Verwijderd

Topicstarter
Hoe krijg je die balk dan weg? Want ik heb echt alles al geprobeerd

Verwijderd

Kijk anders eens naar het Composite UI Application Block de C# versie is al final de vb.net versie zit in de pijplijn:

http://www.gotdotnet.com/...95-44ce-a6ca-f2eafbf2653c

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 16-04 11:36

pjvandesande

GC.Collect(head);

Verwijderd schreef op dinsdag 22 november 2005 @ 11:25:
Hoe krijg je die balk dan weg? Want ik heb echt alles al geprobeerd
Hide ControlBox op MDI Child

Verwijderd

Topicstarter
Tijdens Design Time zet je devolgende propties van het Child Form:

* FormBorderStyle = FormBorderStyle.None
* WindowState = FormWindowState.Normal
* ControlBox = false
* MinimizeBox = false
* MaximizeBox = false

In het Resize Event voegen we het volgende statements toe:

* this.ControlBox = false


Ok dit snap ik, maar wat zijn design time en resize event?

Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim oOntleen As New frmOntleen
oOntleen.MdiParent = Me
oOntleen.FormBorderStyle = FormBorderStyle.None
oOntleen.WindowState = FormWindowState.Maximized
oOntleen.ControlBox = False
oOntleen.MinimizeBox = False
oOntleen.MaximizeBox = False
oOntleen.Show()
End Sub
End Class

ik heb dit maar de lelijke control staat er nog

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
Verwijderd schreef op dinsdag 22 november 2005 @ 16:43:
Tijdens Design Time zet je devolgende propties van het Child Form:

* FormBorderStyle = FormBorderStyle.None
* WindowState = FormWindowState.Normal
* ControlBox = false
* MinimizeBox = false
* MaximizeBox = false

In het Resize Event voegen we het volgende statements toe:

* this.ControlBox = false


Ok dit snap ik, maar wat zijn design time en resize event?
Hmm, ik denk dat jij je eens in een paar dingen moet inlezen....
Het resize event is een event van je form. (Check de property page van je form; meer bepaald de event-tab).
design - time is design - time.

En gebruik ook code-tags als je code post.

https://fgheysels.github.io/


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 16-04 11:36

pjvandesande

GC.Collect(head);

Verwijderd schreef op dinsdag 22 november 2005 @ 16:43:
ik heb dit maar de lelijke control staat er nog
Dan voer je het niet goed uit, in je Resize event van je Form ze je nog even:

Visual Basic .NET:
1
Me.ControlBox = True


De properties van je MdiForm (Form) zet je gewoon design time, dus in Visual Studio zelf.

[ Voor 15% gewijzigd door pjvandesande op 22-11-2005 17:34 ]

Pagina: 1