Condividi tramite


Esempio di editor di insiemi

Aggiornamento: novembre 2007

In questo esempio vengono illustrate le modalità di creazione di un controllo denominato ContactCollectionEditor che implementa un editor dell'insieme personalizzato. L'esempio mostra come specificare il tipo esatto di oggetto che uno sviluppatore di pagine può aggiungere alla proprietà Collection del controllo quando utilizza un editor di insiemi personalizzato. L'editor degli insiemi viene associato a una proprietà Collection, o al tipo di proprietà, applicando EditorAttribute alla proprietà Collection del controllo.

Se viene utilizzata un'implementazione di IList fortemente tipizzata per la proprietà Collection e tutti gli oggetti dell'insieme sono dello stesso tipo, non è necessario utilizzare un editor dell'insieme personalizzato. In tal caso, è possibile utilizzare la proprietà CollectionEditor incorporata come editor delle proprietà poiché CollectionEditor deduce il tipo di oggetto dal tipo della proprietà Items dell'implementazione IList. Quando possibile, utilizzare un insieme tipizzato. Tuttavia, se viene utilizzato un insieme quale ArrayList come tipo di proprietà Collection dei controlli, è necessario utilizzare un editor dell'insieme personalizzato per specificare il tipo di oggetto degli elementi dell'insieme.

ContactCollectionEditor descritto in questo esempio viene utilizzato dalla proprietà Contacts del controllo QuickContacts descritto in Esempio di proprietà Collection di Web Control. Questo attiva l'aggiunta di oggetti di tipo Contact alla proprietà Contacts mediante un'interfaccia utente dell'editor dell'insieme. La classe ContactCollectionEditor deriva da CollectionEditor ed esegue l'override del metodo CreateCollectionItemType per restituire il tipo Contact.

Se la proprietà Collection del controllo personalizzato contiene oggetti di diversi tipi, implementare un editor di insiemi simile all'editor dell'esempio ed eseguire l'override del metodo CreateNewItemTypes e non del metodo CreateCollectionItemType, quindi restituire i tipi di elementi corretti.

Listato di codice per ContactCollectionEditor

' ContactCollectionEditor.vb
Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Reflection

Namespace Samples.AspNet.VB.Controls
    Public Class ContactCollectionEditor
        Inherits CollectionEditor

        Public Sub New(ByVal newType As Type)
            MyBase.new(newType)
        End Sub

        Protected Overrides Function CanSelectMultipleInstances() _
        As Boolean
            Return False
        End Function

        Protected Overrides Function CreateCollectionItemType() As Type
            Return GetType(Contact)
        End Function
    End Class
End Namespace
// ContactCollectionEditor.cs
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Reflection;

namespace Samples.AspNet.CS.Controls
{
    public class ContactCollectionEditor : CollectionEditor
    {
        public ContactCollectionEditor(Type type)
            : base(type)
        {
        }

        protected override bool CanSelectMultipleInstances()
        {
            return false;
        }

        protected override Type CreateCollectionItemType()
        {
            return typeof(Contact);
        }
    }
}

Creazione e utilizzo dell'esempio

Compilare l'editor ContactCollectionEditor utilizzando il controllo QuickContacts e la classe Contacts elencati in Esempio di proprietà Collection di Web Control. È necessario aggiungere un riferimento all'assembly System.Design per la compilazione.

Per ulteriori informazioni sulla compilazione e l'utilizzo di esempi di controlli personalizzati, vedere Generazione degli esempi dei controlli server personalizzati.

Vedere anche

Concetti

Esempio di proprietà Collection di Web Control

Generazione degli esempi dei controlli server personalizzati

Altre risorse

Sviluppo di controlli server ASP.NET personalizzati