Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[c#] Serialize van een form object

Pagina: 1
Acties:
  • 518 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Ik heb een applicatie waarin een panel staat. Op dit panel staan verschillende elementen, zoals knoppen, bitmaps etc.

Nu zou ik deze hoofdpanel willen serializen naar een bestand. Als ik dit bestand dan nadien zou inladen, dan moet ik de hoofdpanel met elementen terug zien op de juiste plaats.

nu is m'n hoofdpanel een eigen klasse met panel eigenschappen, zoals:

C#:
1
2
public class mijn_klasse : Panel
{}


een gewone klasse serializen is geen probleem, ware het niet dat de form objecten niet kunnen geserialized worden (zoals panel, button, ... )

Hoe kan ik ervoor zorgen dat ik dit toch kan serializen naar een bestand .. zonder appart alle properties te moeten serializen?

Alvast bedankt,

Alexander

[ Voor 3% gewijzigd door Verwijderd op 15-10-2007 14:26 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
classes zijn alleen serializable als ze dus als serializable gemarkeerd zijn.
Aangezien controls dat dus niet zijn kan je ze ook niet serializen ...


Waarom zou je eigenlijk een form willen serializen ?

https://fgheysels.github.io/


  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 16:20
Lijkt me vrij zinloos om een GUI object te serializen en als bestand te bewaren....
Je kan eventueel een screenshot maken :-)
En anders het data-object achter je GUI-object serializeren...

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


Verwijderd

Topicstarter
whoami schreef op maandag 15 oktober 2007 @ 14:35:
classes zijn alleen serializable als ze dus als serializable gemarkeerd zijn.
Aangezien controls dat dus niet zijn kan je ze ook niet serializen ...


Waarom zou je eigenlijk een form willen serializen ?
Klassen zijn idd enkele serializable als je ze zo toelaat (bv [serializable] ), en controls kunnen dit inderdaad niet. Maar is er geen mogelijkheid om dit toch te omzeilen?

Waarom ik dit wil doen? De form die ik maak is volledig dynamisch door de gebruiker in te vullen. En nu zou dit moeten opgeslaan worden en daarna terug opgehaald worden. Waarbij alle controls dezelfde eigenschappen, posities .. hebben.

Groeten,
Alexander

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
Tja, dan kan je even over alle properties van alle door de gebruiker gemaakte/geplaatste controls lopen (mbhv reflection), en schrijf al deze info weg. Hou ook bij van welk type die control is natuurlijk, zodanig dat je, als die form opnieuw moet opgebouwd worden, je iedere control opnieuw kan maken, de juiste properties zetten, etc...

https://fgheysels.github.io/


  • L-VIS
  • Registratie: April 2005
  • Laatst online: 20:09
Waarom ik dit wil doen? De form die ik maak is volledig dynamisch door de gebruiker in te vullen.
Dan is er toch een object wat controleert welke controls met welke waarden op je form staan. Zo niet, dan zou ik imho toch over je ontwerp gaan nadenken.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Forms serializeren kan wel degelijk nut hebben. Je kunt namelijk een form template maken. De deserialzen. Ik gebruik deze techiniek regelmatig in beheer toepasingen waarbij alleen de data en niet het formulier veranderd en waarbij het formulier dynamisch uit database wordt opgebouwd wordt. Via serializeren/deserializen kan ik het form framework 'cachen' en op deze manier blijft de applicatie supersnel.

Omdat de standaard windows controls standaard niet als serializable zijn gemarkeert kun je ze dus inderdaad niet simpel serializeren.

Ik heb een eigen namespace gemaakt en voor elke control de noodzakelijke properties en methodes geimplementeert. Mijn controls werken zowel in een windows forms als op een webform. Via de ISerializable interface kun je het (de)serializatie process overrriden en dus ook properties van het originele controls verwerken. Houd er wel rekening mee dat referenties naar externe objecten (database connections) en events niet eenvoudig zijn te (de)serialiseren.

If it isn't broken, fix it until it is..


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 21-11 07:55

mOrPhie

❤️❤️❤️❤️🤍

Kan de gebruiker echt -alle- properties van de form en controls aanpassen of is het een beperkte set aan properties? Als het een beperkte set is, kun je die (imho) beter in een model-klasse verwerken en die serializable maken. De mapping tussen model-klasse (met de verschillende aan te passen properties) en het form moet je dan alleen zelf nog regelen. Zou houd je in elk geval het serializeerbare deel beheersbaar. :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Verwijderd

Topicstarter
mOrPhie schreef op maandag 15 oktober 2007 @ 16:05:
Kan de gebruiker echt -alle- properties van de form en controls aanpassen of is het een beperkte set aan properties? Als het een beperkte set is, kun je die (imho) beter in een model-klasse verwerken en die serializable maken. De mapping tussen model-klasse (met de verschillende aan te passen properties) en het form moet je dan alleen zelf nog regelen. Zou houd je in elk geval het serializeerbare deel beheersbaar. :)
de gebruiker kan heel veel aanpassen aan het element. Want het is een eigen control, gebaseerd op een panel.
Pagina: 1