Archief - [VB.NET.] Mdi Forms

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Aelyon

Legacy Member
Hallo

Telkens als ik een form opendoe via mijn menustructuur, en dan bijv. een ander opendoe. en dan weer het eerste open, dan zijn er 2 window van het eerste formulier. Hoe verhelp ik dit? M.a.w als een gebruiker een form opent en later weer wilt heropenen zonder dat hij deze heeft gesloten, moet het programma niet opnieuw een nieuw window aanmaken

------Form1 (Form1.Show)
-------Form2 (Form2.Show)
---------Form1 (Form1.Show)

Zo ziet het eruit atm. Maar hij moet dus eigenlijk terugspringen naar Form1 vanboven

------Form1 <-| (Form1.Show)
--------Form2 | (Form2.Show)
--------------- (Form1.Show)

Obliv`

Legacy Member
Om ervoor te zorgen dat je van een bepaald type maar één instance kunt creëren, kan je het singleton pattern implementeren. Dat een simpel patroontje en je vindt er tonnen voorbeelden van op google in eender welke taal.

Vind je het singleton pattern wat overkill? Dan kan je ook wel door de mdi-children van je parent form loopen en checken of er al een instance is van het type form dat je wil openen.

ZarahII

Legacy Member
For Each f As Form In Me.MdiChildren
If f.Text.Trim() = FormText.Trim() Then
f.Activate()
Return True
End If
Next

iets in die trend

Obliv`

Legacy Member
ZarahII zei:
For Each f As Form In Me.MdiChildren
If f.Text.Trim() = FormText.Trim() Then
f.Activate()
Return True
End If
Next

iets in die trend

Inderdaad, maar checken op de Text van een form om te vergelijken of het wel het correcte type is, lijkt me verre van veilig. Beter is om het type van je form te checken:

in C#

if (f.GetType().Equals(typeof(MyForm))
{
//er is al een instantie van het type MyForm
}

in VB

If f.GetType().Equals(GetType(MyForm))
//er is al een instantie van het type MyForm
End If
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan