[C#] Formproblemen (bug?)

Pagina: 1
Acties:

  • whoami
  • Registratie: December 2000
  • Laatst online: 20-04 18:20
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)
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/


  • ErectionJackson
  • Registratie: April 2000
  • Laatst online: 23-06-2017

ErectionJackson

Ff testen hoe lang een onderti

Kun je niet gewoon bij de unload of close event van dat parent form een regeltje code neerzetten die frmDetPostcode closet?

Microsoft SharePoint oplossingen | www.onlinesamenwerken.nl | Persian Dance Helia


Verwijderd

Les 1 MDIForm programming: Open/sluit forms vanuit het MDI mainform en / of maak ze childs van het MDI main form (je MDI container). Open _ALLEEN_ forms vanuit MDI childforms wanneer het popups zijn.

Het probleem is nl. dat je formfocus naar elk willekeurig form kan overgaan in een MDI applicatie. Echter jij wilt een zekere volgorde daarin hebben. Om te voorkomen dat een parent-child chain van forms wordt verbroken doordat het parentform wordt geclosed door de user (die er verder geen weet van heeft) en de child blijft open, is het verstandig altijd je forms in een MDI app te openen vanuit je MDI container/mainwindow en alle child windows in je MDI app childs te maken van je MDI mainwindow.

  • whoami
  • Registratie: December 2000
  • Laatst online: 20-04 18:20
Op woensdag 13 maart 2002 17:11 schreef ErectionJackson het volgende:
Kun je niet gewoon bij de unload of close event van dat parent form een regeltje code neerzetten die frmDetPostcode closet?
Ja, daar heb ik ook aan gedacht, maar ik vond dat zo geen mooie oplossing.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 20-04 18:20
Op woensdag 13 maart 2002 17:25 schreef Otis het volgende:
Les 1 MDIForm programming: Open/sluit forms vanuit het MDI mainform en / of maak ze childs van het MDI main form (je MDI container). Open _ALLEEN_ forms vanuit MDI childforms wanneer het popups zijn.
Wat bedoel je nu eigenlijk? Dat ik dan als owner van m'n frmDetPostcode m'n MainForm moet instellen ipv het lijstscherm?

https://fgheysels.github.io/


Verwijderd

Je moet alleen popups openen vanuit je MDI childwindows (dus schermpjes met application modal focus). Ieder ander scherm open je door het MDImain scherm een event te sturen, die dan het scherm opent. Het is in principe zo dat MDI is bedoeld voor het openen van vele schermen die geen relatie hebben tot elkaar maar tot het MDI main window. Je moet in een MDI applicatie alle schermen bv via het menu kunnen openen. Andere schermen zijn popups. Het menu zit in je MDI mainform, dus handel je DAAR dus open/close events van schermen af.

  • whoami
  • Registratie: December 2000
  • Laatst online: 20-04 18:20
Nu, dat impliceert dan dat ik eigenlijk geen 2 windows tegelijk kan laten openstaan als ik die open vanop mijn lijstscherm en dat die 2 dan modal zijn. Dat is niet echt wat ik wil.
In Delphi kun je dat nl wel, daar zet je gewoon de FormStyle property van uw Form op MDIChild of MDIParent en het is gefixed.

En als ik nu een applicatie wil maken met veel vensters die tegelijk open staan en die wel een relatie met elkaar hebben, welk model moet ik dan gebruiken?

https://fgheysels.github.io/

Pagina: 1