Ik ben bezig een applicatie in C# aan het schrijven en ik bots op volgend probleem:
Ik heb een hoofdform (MainForm) die een MdiContainer is. Vanop deze hoofdform open ik een andere form (frmLstPostcode). De MdiParent property van deze form bevat een reference naar de hoofdform (MainForm), frmLstPostcode is dus een MdiChildForm.
Vanop die childform frmLstPostcode wil ik nu nog een andere form openen, nl. frmDetPostcode. De owner en de parent van deze form zijn frmLstPostcode. Tot dusver geen probleem. Als ik een instance open staan heb van frmLstPostcode en een instance van frmDetPostcode, en ik sluit de instance van frmLstPostcode, dan wordt de instance van frmDetPostcode ook gesloten, netjes zoals het hoort.
Nu wel ik echter dat frmDetPostcode ook een Mdi-child form is, zodat instances van frmDetPostcode niet buiten m'n MdiContainer (MainForm) kunnen verplaatst worden. Ik zet dus de MdiParent property van deze form gelijk aan de MdiParent property van de owner van deze form (frmLstPostcode). Hier loopt het echter fout: frmDetPostcode is nu wel een MdiChild form maar als ik z'n parent nu sluit (een instance van frmLstPostcode), dan blijft de instance van frmDetPostcode gewoon open staan, terwijl die normaal zou moeten gesloten worden, z'n parent wordt nl. gesloten.
Om alles wat te verduidelijken, ziehier wat code (een fragment uit de constructor van frmStdDetail, frmDetPostcode inherited van deze class)
Ik heb een hoofdform (MainForm) die een MdiContainer is. Vanop deze hoofdform open ik een andere form (frmLstPostcode). De MdiParent property van deze form bevat een reference naar de hoofdform (MainForm), frmLstPostcode is dus een MdiChildForm.
Vanop die childform frmLstPostcode wil ik nu nog een andere form openen, nl. frmDetPostcode. De owner en de parent van deze form zijn frmLstPostcode. Tot dusver geen probleem. Als ik een instance open staan heb van frmLstPostcode en een instance van frmDetPostcode, en ik sluit de instance van frmLstPostcode, dan wordt de instance van frmDetPostcode ook gesloten, netjes zoals het hoort.
Nu wel ik echter dat frmDetPostcode ook een Mdi-child form is, zodat instances van frmDetPostcode niet buiten m'n MdiContainer (MainForm) kunnen verplaatst worden. Ik zet dus de MdiParent property van deze form gelijk aan de MdiParent property van de owner van deze form (frmLstPostcode). Hier loopt het echter fout: frmDetPostcode is nu wel een MdiChild form maar als ik z'n parent nu sluit (een instance van frmLstPostcode), dan blijft de instance van frmDetPostcode gewoon open staan, terwijl die normaal zou moeten gesloten worden, z'n parent wordt nl. gesloten.
Om alles wat te verduidelijken, ziehier wat code (een fragment uit de constructor van frmStdDetail, frmDetPostcode inherited van deze class)
code:
1
2
3
4
5
6
| public frmStdDetail(Form owner)
{
this.MaximizeBox = false;
this.FormBorderStyle = FormBorderStyle.FixedSingle;
this.Owner = owner;
this.MdiParent = owner.MdiParent; |
https://fgheysels.github.io/