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