Exemplo de Editor de Coleção
Este exemplo mostra como criar um controle chamado ContactCollectionEditor que implementa um editor de coleção personalizado.O exemplo mostra como especificar o tipo exato de objeto que um desenvolvedor de página pode adicionar à propriedade coleção do controle ao usar um editor de coleção personalizado.Você associa um editor de coleção com uma propriedade de coleção (ou o tipo de propriedade) aplicando a propriedade de coleção EditorAttribute do controle.
Se você usar uma implementação IList fortemente tipada para sua propriedade da coleção, e todos os objetos na coleção serão do mesmo tipo, você não precisa de um editor de coleção personalizado.Nesse caso, você pode depender do CollectionEditor interno como o editor de propriedades porque CollectionEditor inferirá o tipo de objeto a partir do tipo da propriedade Items da implementação do IList.Você deve usar um conjunto tipado sempre que possível.No entanto, se você usar uma coleção como ArrayList como o tipo de propriedade de coleção de um controle, é necessário um editor de coleção personalizada para especificar o tipo de objeto da coleção de itens.
O ContactCollectionEditor descrito neste exemplo é usado pela propriedade Contacts do controle QuickContacts descrito em Exemplo da propriedade de coleção do controle da Web.Ele permite que objetos do tipo Contact sejam adicionados à propriedade Contacts através de uma interface do usuário (UI) de um editor de coleção .The ContactCollectionEditor classe deriva deCollectionEditor e substitui o CreateCollectionItemType método para retornar a Contact Digite.
Se a propriedade da coleção do seu controle contiver objetos de diferentes tipos, implemente um editor de coleção semelhante ao exemplo mas substitua o método CreateNewItemTypes a invés do método CreateCollectionItemType e retorne os tipos de item corretos.
Listagem de código para o 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);
}
}
}
Construindo e Usando o Exemplo
Compile o editor ContactCollectionEditor com a controle QuickContacts e a classe Contacts descrita em Exemplo da propriedade de coleção do controle da Web.Você deve adicionar uma referência ao conjunto de módulos (Assembly) System.Design para a compilação.
Para obter mais informações sobre a compilação e o uso dos exemplos de controles personalizados, consulte Construindo os Exemplos de Controle de Servidor Personalizado.
Consulte também
Conceitos
Exemplo da propriedade de coleção do controle da Web
Construindo os Exemplos de Controle de Servidor Personalizado