[C#] Inherited DataGridView class geeft bizarre foutmelding

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jos707
  • Registratie: December 2000
  • Laatst online: 11-09 09:20
Ik heb een klasse gemaakt die overerft van DataGridView. Dit om een datagridview te kunnen aanmaken die aangepast is aan mijn noden. Visual Studio maakt dan netjes een componentje aan in de Toolbox zodat ik simpel via drag en drop mijn custom datagridview gewoon op mijn form kan slepen.
Nu loop ik vast op het probleem dat telkens wanneer ik in designview iets wijzig op de form ik dan volgende foutmelding krijg: "Code generation for property...is not marked as serializable" bij het compilen.
Dit probleem kreeg ik wanneer ik een List<DataGridViewRow> property toevoegde aan de klasse. Zit hier nu al een tijdje op te staren maar kan er niks zinnigs van maken.
Volgens google moet het iets te maken hebben met DesignerSerializationVisibility . Maar wat juist is mij een raadsel. Iemand die weet in welke richting ik moet zoeken ?
Ik dacht misschien in mijn klasse de interface IsSerializable te implementeren. Maar hoe doe ik dat als deze klasse al reeds overerft van DataGridView ?
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 class MyDataGridView : DataGridView
    {
        private List<DataGridViewRow> m_DataGridRows;


        public MyDataGridView () : base()
        {
            m_DataGridRows = new List<DataGridViewRow>();
        }

        public MyDataGridView (IContainer container)
        {
            container.Add(this);
          m_DataGridRows = new List<DataGridViewRow>();
        }

//... hoop andere methods


        public List<DataGridViewRow> M_DataGridRows 
        {
            get { return  m_DataGridRows ; }
            set {  m_DataGridRows = value; }
        }

    }

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
Volgens mij heeft het te maken met het feit dat de designer niet in staat is om code te genereren voor de M_DataGridRows property (naamgeving :X).

Ik vermoed dat het niet nodig is dat de designer je DataGridRows in de designer zelf kan tonen ? Markeer die property dan met ht DesignerSerializationVisibility Attribute, en geef de waarde 'Hidden' mee.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • jos707
  • Registratie: December 2000
  • Laatst online: 11-09 09:20
whoami schreef op donderdag 23 oktober 2008 @ 23:22:
Volgens mij heeft het te maken met het feit dat de designer niet in staat is om code te genereren voor de M_DataGridRows property (naamgeving :X).

Ik vermoed dat het niet nodig is dat de designer je DataGridRows in de designer zelf kan tonen ? Markeer die property dan met ht DesignerSerializationVisibility Attribute, en geef de waarde 'Hidden' mee.
Bedankt, door DesignerSerializationVisibility Attribute op 'Content' of 'Hidden' zetten blijkt het wel te werken. Dus blijkbaar gaat de designer bij custom controls steeds deze proberen te serializen ookal heb ik nergens iets gespecifeerd dat mijn klasse moet worden serialized :?

idd die naamgeving, was even snel uit de losse pols :)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:23
De designer gaat code gaan genereren voor je class, zodanig dat hij deze kan weergeven in de designer.
Door het DesignerSerializationVisibility attribuut te gebruiken, kan je bv aangeven dat hij geen code moet genereren voor een bepaalde property.

https://fgheysels.github.io/