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