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:
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
Non vi vorrei tediare con il codice della classe Appointment ed AppointmentCollection ma è la stessa storia ripetuta per la classe Column e ColumnCollection.
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