Un saluto a tutti!
Ho sviluppato uno user control e sono ormai giunto alla fase finale. Inserendolo però in un progetto esistente, specificando quindi la .dll, nel momento in cui trascino il controllo sul form mi da il seguente errore:
Impossibile creare il componente 'Agenda'. Messaggio di errore: 'System.Runtime.Serialization.SerializationExcepti on: Il tipo ...UserControl' nell' assembly .... non è contrassegnato come serializzabile.
Ora, mi era già capitato un' altra volta ed avevo risolto ponendo l' attributo <Serializable()> alla classe e tutte le sottoclassi. Questa volta non basta...
Il codice è il seguente:
Non vi vorrei tediare con il codice della classe Appointment ed AppointmentCollection ma è la stessa storia ripetuta per la classe Column e ColumnCollection.codice:<Serializable()> Public Class Agenda #Region "Variabili" Private WithEvents _Colonne As New ColumnCollection Private WithEvents _Appuntamenti As New AppointmentCollection #End Region #Region "Proprietà" Public Property Columns As ColumnCollection Get Return _Colonne End Get Set(value As ColumnCollection) _Colonne = value AggiornaColonne() End Set End Property Public Property Appointments As AppointmentCollection Get Return _Appuntamenti End Get Set(value As AppointmentCollection) Try _Appuntamenti = value Catch ex As Exception End Try End Set End Property #End Region End Class <Serializable()> Public Class Column #Region "Variabili" Private _descrizione As String Private _indiceVisualizzazione As Integer ............. #End Region #Region "Proprietà" Public Property Description As String Get Return _descrizione End Get Set(value As String) Try _descrizione = value RaiseEvent ColumnChanged(Me) Catch ex As Exception End Try End Set End Property Public Property DisplayIndex As Integer Get Return _indiceVisualizzazione End Get Set(value As Integer) _indiceVisualizzazione = value RaiseEvent ColumnChanged(Me) End Set End Property #End Region End Class <Serializable(), Editor(GetType(ColumnCollection.ColumnCollectionEditor), GetType(Drawing.Design.UITypeEditor))> Public Class ColumnCollection Inherits System.Collections.ObjectModel.Collection(Of Column) Friend Shared ListaColonne As List(Of Column) #Region "Eventi" Public Event ColumnAdded(app As Column) Public Event ColumnRemoved(app As Column) Public Event ColumnChanged(app As Column) Public Event ColumnsChanged() #End Region ....tante altre cose ... ... End Class
Facendo varie prove mi sono accorto che il problema non si manifesta se nella dichiarazione delle variabili per la classe Agenda tolgo la paraola chiave new:
Private WithEvents _Colonne As ColumnCollection
Private WithEvents _Appuntamenti As AppointmentCollection
Il problema è che poi non riesco a mantenere le colonne impostate in progettazione. Ho provato a lasciare così la dichiarazione delle variabili e ad aggiungere l' inizializzazione nella sub New ma il problema rimane...
Non so più cosa fare...
Grazie a tutti!!
Filippo

Rispondi quotando