Recipe4hate
Legacy Member
Hallo allemaal,
Ik ben op een vreemd, doch imo wel logisch probleem gestuit bij het bouwen van een grote Winforms app in C# (dotnet4.0).
Ik heb een Flowlayoutpanel dat verantwoordelijk is voor het tonen van een lijst van user controls.
De user control bestaat uit enkele panels, labels, 2 richtextboxes en een paar 16x16 afbeeldingen.
Wanneer er een paar van deze controls aan de flowlayoutpanel worden toegevoegd, gaat alles vlotjes.
Echter wanneer er meer (laat ons zeggen vanaf 100) controls moeten worden getoond, dan vertraagt alles visueel ineens sterk.
Bij momenten krijg ik ook de error 'Error creating window handle'.
Wanneer ik in Taskmanager ga kijken, merk ik dat op dat moment de USER Objects grens van 10000 is bereikt/wordt overschreden.
Volgens mij zijn er geen leaks, want wanneer ik de user controls van de panel haal (via code), daalt mijn USER Objects aantal terug naar een normaal resultaat (< 100).
Nu is mijn vraag niet hoe ik de grens kan overschrijden, want qua performance is dit niet haalbaar, maar hoe ik dit probleem kan omzeilen?
Ik heb ergens gelezen dat je eventueel user controls naar images kan omzetten en deze tonen tot je de control effectief nodig hebt. Jammer genoeg werkt dit niet direct met richtextboxes... en lijkt het hele proces me redelijk omslachtig? (prove me otherwise
)
Zeker niet onbelangrijk: het is niet nodig om alle controls tegelijk te tonen.
Wel moet ik berekeningen kunnen maken met data uit alle controls (maar dit lijkt me wel mogelijk door een generic list van de user controls bij te houden en van hieruit data te extracten > gaat overigens wel zeer vlot -probleem ligt dus echt bij het visuele).
Ook moet de user snel over alle user controls kunnen scrollen om ze te evalueren.
Misschien moet ik een soort van paging/scrolling ipv de flowlayoutpanel-scrollbar implementeren? Zo hoeven niet alle user controls tegelijk aan de panel gekoppeld te zijn.
Heeft iemand hier tips/voorbeelden van?
Suggesties en opmerkingen zijn zeer welkom!
Ik ben op een vreemd, doch imo wel logisch probleem gestuit bij het bouwen van een grote Winforms app in C# (dotnet4.0).
Ik heb een Flowlayoutpanel dat verantwoordelijk is voor het tonen van een lijst van user controls.
De user control bestaat uit enkele panels, labels, 2 richtextboxes en een paar 16x16 afbeeldingen.
Wanneer er een paar van deze controls aan de flowlayoutpanel worden toegevoegd, gaat alles vlotjes.
Echter wanneer er meer (laat ons zeggen vanaf 100) controls moeten worden getoond, dan vertraagt alles visueel ineens sterk.
Bij momenten krijg ik ook de error 'Error creating window handle'.
Wanneer ik in Taskmanager ga kijken, merk ik dat op dat moment de USER Objects grens van 10000 is bereikt/wordt overschreden.
Volgens mij zijn er geen leaks, want wanneer ik de user controls van de panel haal (via code), daalt mijn USER Objects aantal terug naar een normaal resultaat (< 100).
Nu is mijn vraag niet hoe ik de grens kan overschrijden, want qua performance is dit niet haalbaar, maar hoe ik dit probleem kan omzeilen?
Ik heb ergens gelezen dat je eventueel user controls naar images kan omzetten en deze tonen tot je de control effectief nodig hebt. Jammer genoeg werkt dit niet direct met richtextboxes... en lijkt het hele proces me redelijk omslachtig? (prove me otherwise
)Zeker niet onbelangrijk: het is niet nodig om alle controls tegelijk te tonen.
Wel moet ik berekeningen kunnen maken met data uit alle controls (maar dit lijkt me wel mogelijk door een generic list van de user controls bij te houden en van hieruit data te extracten > gaat overigens wel zeer vlot -probleem ligt dus echt bij het visuele).
Ook moet de user snel over alle user controls kunnen scrollen om ze te evalueren.
Misschien moet ik een soort van paging/scrolling ipv de flowlayoutpanel-scrollbar implementeren? Zo hoeven niet alle user controls tegelijk aan de panel gekoppeld te zijn.
Heeft iemand hier tips/voorbeelden van?
Suggesties en opmerkingen zijn zeer welkom!
. 