Freigeben über


Beispiel für einen Auflistungs-Editor

Aktualisiert: November 2007

In diesem Beispiel wird veranschaulicht, wie ein Steuerelement mit dem Namen ContactCollectionEditor erstellt wird, das einen benutzerdefinierten Auflistungs-Editor implementiert. Im Beispiel wird gezeigt, wie bei Verwendung eines benutzerdefinierten Auflistungs-Editors der genaue Objekttyp anzugeben ist, den ein Seitenentwickler der Auflistungseigenschaft eines Steuerelements hinzufügen kann. Sie ordnen einem Auflistungs-Editor eine Auflistungseigenschaft (oder den Typ der Eigenschaft) zu, indem Sie das EditorAttribute für die Auflistungseigenschaft des Steuerelements übernehmen.

Wenn Sie eine stark typisierte IList-Implementierung für die Auflistungseigenschaft verwenden und alle Objekte in der Auflistung vom selben Typ sind, benötigen Sie keinen benutzerdefinierten Auflistungs-Editor. In diesem Fall können Sie den integrierten CollectionEditor als Eigenschaften-Editor verwenden, da der CollectionEditor den Objekttyp vom Typ der Items-Eigenschaft der IList-Implementierung ableitet. Sie sollten eine typisierte Auflistung verwenden, wo immer dies möglich ist. Wenn Sie allerdings eine Auflistung wie ArrayList als Typ für die Auflistungseigenschaft eines Steuerelements verwenden, benötigen Sie einen benutzerdefinierten Auflistungs-Editor, um den Objekttyp der Auflistungselemente angeben zu können.

Der in diesem Beispiel beschriebene ContactCollectionEditor wird von der Contacts-Eigenschaft des QuickContacts-Steuerelements verwendet, das im Beispiel für eine Auflistungseigenschaft eines Webserversteuerelements beschrieben ist. Mit dem Editor können Objekte des Typs Contact zur Contacts-Eigenschaft über eine Benutzeroberfläche des Auflistungs-Editors hinzugefügt werden. Die ContactCollectionEditor-Klasse wird von CollectionEditor abgeleitet und überschreibt die CreateCollectionItemType-Methode, um den Contact-Typ zurückzugeben.

Wenn die Auflistungseigenschaft des Steuerelements unterschiedliche Objekttypen enthält, sollten Sie einen Auflistungs-Editor ähnlich dem im Beispiel implementieren. Allerdings sollten Sie die CreateNewItemTypes-Methode anstelle der CreateCollectionItemType-Methode überschreiben und die korrekten Elementtypen zurückgeben.

Codeauflistung für den 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);
        }
    }
}

Erstellen und Verwenden des Beispiels

Kompilieren Sie den ContactCollectionEditor-Editor mit dem QuickContacts-Steuerelement und der Contacts-Klasse, die im Beispiel für eine Auflistungseigenschaft eines Webserversteuerelements aufgelistet sind. Für die Kompilierung müssen Sie einen Verweis auf die System.Design-Assembly hinzufügen.

Weitere Informationen über das Kompilieren und Verwenden der benutzerdefinierten Beispielsteuerelemente finden Sie unter Erstellen der Beispiele für benutzerdefinierte Serversteuerelemente.

Siehe auch

Konzepte

Beispiel für eine Auflistungseigenschaft eines Webserversteuerelements

Erstellen der Beispiele für benutzerdefinierte Serversteuerelemente

Weitere Ressourcen

Entwickeln von benutzerdefinierten ASP.NET-Serversteuerelementen