Toon posts:

[vb7] Hoe sluit ik een MDI form?

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb bij mijn programma een mdi form gemaakt, maar als ik het wil afsluiten dan gebeurt er niets.

code:
1
2
3
4
5
6
7
8
        Select Case MenuItem5.Checked
            Case False
                objdirbrowser.Show()
                MenuItem5.Checked = True
            Case True
                objdirbrowser.Close()
                MenuItem5.Checked = False
        End Select


Ik heb ook al objdirbrowser.Dispose geprobeerd maar dat wil ook niet werken, Het openen van de mdi gaat wel.

Weet iemand wat ik verkeerd doe?

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Unload objdirbrowser :?

Ik neem aan dat objdirbrowser je form is.

edit:
Laat maar je werkt met .net

[ Voor 25% gewijzigd door Phenomenon op 27-12-2002 17:44 ]


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
hoe open je je form? welke errors krijg je?
met Form.Dispose() werkt het hier perfect..

Verwijderd

Topicstarter
unload is geen geldige methode, het probleem is juist dat ik helemaal geen errors krijg, hij doet gewoon niets. Misschien dat ik de child mdi ergens aan aan moet passen??

  • EfBe
  • Registratie: Januari 2000
  • Niet online
wat is een child mdi?

de MDI main form open je ergens, toch? Je kunt dan t.a.t. this.close doen in de MDI form class. Een subform dat een child is binnen het MDI form, moet je closen waar je het opent, want er is slechts 1 controlling object in een MDI wereld: het MDI mainform. Hij komt uberhaupt wel in die regel met die Close() actie? Hou er rekening mee dat ook binnen een MDI form je slechts 1 thread hebt, dus mocht je MDI app ergens mee bezig zijn, dan zal de execution nooit bij je Close() terechtkomen totdat die actie is afgelopen.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
hm jah klopt, maar hoe kan dan een geopend mdi child sluiten met een opdracht in de mdicontainer?

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 28 december 2002 @ 15:20:
hm jah klopt, maar hoe kan dan een geopend mdi child sluiten met een opdracht in de mdicontainer?
Het MDI mainwindow object heeft een reference naar dat childwindow object als het goed is. Close() aanroepen moet goed gaan. Maar je hebt dat al geimplementeerd zo te zien, ik vroeg me af of hij daar ooit wel komt (breakpoint setten op die plek, debug, closen, wat gebeurt er?).

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Zoals ik al zei, vanuit je container kan je gewoon naamVanForm.Close() doen..
EfBe schreef op 28 December 2002 @ 13:54:
Hij komt uberhaupt wel in die regel met die Close() actie?
Loop er eens door heen met de debugger om hier achter te komen..

edit: ik zag nog iets in de manual staan wat je waarschijnlijk over het hoofd hebt gezien, maar dit heeft eigenlijk nix met dit probleem te maken, maar misschien toch handig:
Note When the Close method is called on a Form displayed as a modeless window, you cannot call the Show method to make the form visible, because the form's resources have already been released. To hide a form and then make it visible, use the Control.Hide method.

[ Voor 49% gewijzigd door brammetje op 28-12-2002 18:03 ]


  • simon
  • Registratie: Maart 2002
  • Laatst online: 26-08 23:15
Unload: definitief, uit enz...
Formnaam.visible = False : non definitief, is alleen niet meer zichtbaar...

|>


  • EfBe
  • Registratie: Januari 2000
  • Niet online
simon: idd een betere oplossing.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
ok, ik heb em door, de dimensie moet opgegeven worden na het inherits statement, zo dus

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim objdirbrowser As New frmdirBrowser()


    Public Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click

        Select Case MenuItem5.Checked
            Case False
                objdirbrowser.MdiParent = Me
                objdirbrowser.Show()
                MenuItem5.Checked = True
            Case True
                objdirbrowser.Hide()
                MenuItem5.Checked = False
        End Select
    End Sub

End Class
Pagina: 1