Freigeben über


ListControlDesigner-Klasse

Fungiert als die Basisklasse für Designer, die in Visual Web Designer Entwurfszeitunterstützung für Steuerelemente bieten, die von der abstrakten ListControl-Klasse abgeleitet sind.

Namespace: System.Web.UI.Design.WebControls
Assembly: System.Design (in system.design.dll)

Syntax

'Declaration
Public Class ListControlDesigner
    Inherits DataBoundControlDesigner
'Usage
Dim instance As ListControlDesigner
public class ListControlDesigner : DataBoundControlDesigner
public ref class ListControlDesigner : public DataBoundControlDesigner
public class ListControlDesigner extends DataBoundControlDesigner
public class ListControlDesigner extends DataBoundControlDesigner

Hinweise

Wenn Benutzer in Visual Web Designer von der Quellansicht zur Entwurfsansicht wechseln, wird der Markupquellcode analysiert, der das von der ListControl-Klasse abgeleitete Steuerelement beschreibt, und eine Entwurfszeitversion des Steuerelements wird auf der Entwurfsoberfläche erstellt. Wenn der Benutzer zurück zur Quellansicht wechselt, wird das Entwurfszeit-Steuerelement im Markupquellcode beibehalten und in das Markup für die Webseite eingearbeitet. Die ListControlDesigner-Klasse fungiert als die Basisklasse für Designer, die in Visual Web Designer Entwurfszeitunterstützung für Steuerelemente bieten, die von ListControl abgeleitet sind.

Die ListControlDesigner-Klasseneigenschaften bieten folgende Funktionalität:

  • Die ActionLists-Eigenschaft gibt ein DesignerActionListCollection-Objekt zurück, das üblicherweise ein Objekt enthält, das für jede Ebene in der Vererbungsstruktur des Designers vom DesignerActionList-Objekt abgeleitet wird.

  • Die DataTextField-Eigenschaft und die DataValueField-Eigenschaft ermöglichen den Zugriff auf die zugehörigen Eigenschaften eines von der ListControl-Klasse abgeleiteten Steuerelements. DataTextField und DataValueField geben die Felder der Datenquelle an, die den Text- bzw. den Werteinhalt der Listenelemente bereitstellen.

Die ListControlDesigner-Klassenmethoden bieten folgende Funktionalität:

  • Die DataBind-Methode bindet das zugeordnete von ListControl abgeleitete Steuerelement an eine Entwurfszeitdatenquelle.

  • Die GetDesignTimeHtml-Methode gibt das Markup zurück, das zum Rendering des zugeordneten Steuerelements zur Entwurfszeit verwendet wird.

  • Die GetSelectedDataSource-Methode gibt die Entwurfszeit-DataSource-Komponente des zugeordneten Steuerelementcontainers zurück.

  • Die GetResolvedSelectedDataSource-Methode gibt die DataSource des Steuerelementcontainers zurück, die zur Entwurfszeit zur DataMember-Eigenschaft des Steuerelements aufgelöst wird.

  • Die Initialize-Methode bereitet des Designer zum Anzeigen und Entwerfen des zugeordneten von ListControl abgeleiteten Steuerelements vor.

  • Die OnDataSourceChanged-Methode wird aufgerufen, wenn sich die DataSource des zugeordneten Steuerelements geändert hat.

  • Mit der PreFilterProperties-Methode werden Eigenschaften aus dem zugeordneten Steuerelement entfernt, diesem weitere Eigenschaften hinzugefügt oder Shadowing für die Eigenschaften des zugeordneten Steuerelements durchgeführt, das von ListControl abgeleitet ist.

Beispiel

Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Beispiel wird veranschaulicht, wie ein benutzerdefinierter Steuerelement-Designer abgeleitet wird. Im zweiten Beispiel wird veranschaulicht, wie ein abgeleitetes Steuerelement einem Designer zugeordnet wird.

Im folgenden Codebeispiel wird veranschaulicht, wie eine Klasse mit dem Namen SimpleRadioButtonListDesigner erstellt wird, die von der ListControlDesigner-Klasse erbt. Die SimpleRadioButtonListDesigner-Klasse überschreibt die GetDesignTimeHtml-Methode, die Initialize-Methode und die OnDataSourceChanged-Methode. Die SimpleRadioButtonListDesigner-Klasse zeigt ein SimpleRadioButtonList-Steuerelement auf der Entwurfsoberfläche an.

Imports System
Imports System.ComponentModel
Imports System.Drawing
Imports System.Diagnostics
Imports System.Web.UI.WebControls
Imports System.Web.UI.Design.WebControls

Namespace Examples.VB.WebControls.Design

    ' Create the SimpleRadioButtonListDesigner, which provides
    ' design-time support for a custom list class.  
    Public Class SimpleRadioButtonListDesigner
        Inherits ListControlDesigner

        Private simpleRadioButtonList As SimpleRadioButtonList
        Private changedDataSource As Boolean

        ' Create the markup to display the control on the design surface.
        Public Overrides Function GetDesignTimeHtml() As String

            Dim designTimeHtml As String = String.Empty

            ' Create variables to access the control's
            ' item collection and back color. 
            Dim items As ListItemCollection = simpleRadioButtonList.Items
            Dim oldBackColor As Color = simpleRadioButtonList.BackColor

            ' Check the property values and render the markup
            ' on the design surface accordingly.
            Try
                If (Color.op_Equality(oldBackColor, Color.Empty)) Then
                    simpleRadioButtonList.BackColor = Color.Gainsboro
                End If

                If (changedDataSource) Then
                    items.Add( _
                        "Updated to a new data source: " & DataSource & ".")
                End If

                designTimeHtml = MyBase.GetDesignTimeHtml()

            Catch ex As Exception
                ' Catch any exceptions that occur.
                MyBase.GetErrorDesignTimeHtml(ex)

            Finally
                ' Set the properties back to their original state.
                simpleRadioButtonList.BackColor = oldBackColor
                items.Clear()
            End Try

            Return designTimeHtml
        End Function ' GetDesignTimeHtml

        Public Overrides Sub Initialize(ByVal component As IComponent)

            ' Ensure that only a SimpleRadioButtonList can be created 
            ' in this designer.
            Debug.Assert( _
                TypeOf component Is SimpleRadioButtonList, _
                "An invalid SimpleRadioButtonList control was initialized.")

            simpleRadioButtonList = CType(component, SimpleRadioButtonList)
            MyBase.Initialize(component)
        End Sub ' Initialize

        ' If the data source changes, set a Boolean variable.
        Public Overrides Sub OnDataSourceChanged()
            changedDataSource = True
        End Sub ' OnDataSourceChanged
    End Class ' SimpleRadioButtonListDesigner
End Namespace ' Examples.VB.WebControls.Design
using System;
using System.ComponentModel;
using System.Drawing;
using System.Diagnostics;
using System.Web.UI.WebControls;
using System.Web.UI.Design.WebControls;

namespace Examples.CS.WebControls.Design
{
    // Create the SimpleRadioButtonListDesigner, which provides
    // design-time support for a custom list class.
    public class SimpleRadioButtonListDesigner : ListControlDesigner
    {
        SimpleRadioButtonList simpleRadioButtonList;
        bool changedDataSource;

        // Create the markup to display the control on the design surface. 
        public override string GetDesignTimeHtml()
        {
            string designTimeMarkup = null;

            // Create variables to access the control
            // item collection and back color.
            ListItemCollection items = simpleRadioButtonList.Items;
            Color oldBackColor = simpleRadioButtonList.BackColor;

            // Check the property values and render the markup
            // on the design surface accordingly.
            try
            {
                if (oldBackColor == Color.Empty)
                    simpleRadioButtonList.BackColor = Color.Gainsboro;

                if (changedDataSource)
                    items.Add("Updated to a new data source: " + 
                        DataSource + ".");

                // Call the base method to generate the markup.
                designTimeMarkup = base.GetDesignTimeHtml();
            }
            catch (Exception ex)
            {
                // Catch any exceptions that occur.
                designTimeMarkup = GetErrorDesignTimeHtml(ex);
            }
            finally
            {
                // Set the properties back to their original state.
                simpleRadioButtonList.BackColor = oldBackColor;
                items.Clear();
            }

            return designTimeMarkup;
        } // GetDesignTimeHtml

        public override void Initialize(IComponent component)
        {
            // Ensure that only a SimpleRadioButtonList can be 
            // created in this designer.
            Debug.Assert( 
                component is SimpleRadioButtonList, 
                "An invalid SimpleRadioButtonList control was initialized.");

            simpleRadioButtonList = (SimpleRadioButtonList)component;
            base.Initialize(component);
        } // Initialize

        // If the data source changes, set a boolean variable.
        public override void OnDataSourceChanged()
        {
            changedDataSource = true;
        } // OnDataSourceChanged
    } // SimpleRadioButtonListDesigner
} // Examples.CS.WebControls.Design

Im folgenden Codebeispiel wird das SimpleRadioButtonList-Steuerelement vom RadioButtonList-Steuerelement abgeleitet, und es wird veranschaulicht, wie das SimpleRadioButtonList-Steuerelement mithilfe der DesignerAttribute-Klasse seinem Designer, der SimpleRadioButtonListDesigner-Klasse, zugeordnet wird.

Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.Security.Permissions

Namespace Examples.VB.WebControls.Design

    ' The SimpleRadioButtonList is a copy of the RadioButtonList.
    ' It uses the SimpleRadioButtonListDesigner for design-time support.
    <AspNetHostingPermission(SecurityAction.Demand, _
        Level:=AspNetHostingPermissionLevel.Minimal)> _
    <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
        Level:=AspNetHostingPermissionLevel.Minimal)> _
    <DesignerAttribute(GetType(Examples.VB.WebControls.Design. _
        SimpleRadioButtonListDesigner))> _
    <DataBindingHandler(GetType(Examples.VB.WebControls.Design. _
        SimpleRadioButtonListDataBindingHandler))> _
    Public Class SimpleRadioButtonList
        Inherits RadioButtonList
    End Class ' SimpleRadioButtonList
End Namespace ' Examples.VB.WebControls.Design
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Security.Permissions;

namespace Examples.CS.WebControls.Design
{
    // The SimpleRadioButtonList is a copy of the RadioButtonList.
    // It uses the SimpleRadioButtonListDesigner for design-time support.
    [AspNetHostingPermission(SecurityAction.Demand, 
        Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, 
        Level = AspNetHostingPermissionLevel.Minimal)]
    [Designer(typeof(Examples.CS.WebControls.Design.
       SimpleRadioButtonListDesigner))]
    [DataBindingHandler(typeof(Examples.CS.WebControls.Design.
        SimpleRadioButtonListDataBindingHandler))]
    public class SimpleRadioButtonList : RadioButtonList
    {
    } // SimpleRadioButtonList
} // Examples.CS.WebControls.Design

.NET Framework-Sicherheit

Vererbungshierarchie

System.Object
   System.ComponentModel.Design.ComponentDesigner
     System.Web.UI.Design.HtmlControlDesigner
       System.Web.UI.Design.ControlDesigner
         System.Web.UI.Design.WebControls.BaseDataBoundControlDesigner
           System.Web.UI.Design.WebControls.DataBoundControlDesigner
            System.Web.UI.Design.WebControls.ListControlDesigner
               System.Web.UI.Design.WebControls.BulletedListDesigner

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

ListControlDesigner-Member
System.Web.UI.Design.WebControls-Namespace
ListControl
DataBoundControl
DataBoundControlDesigner-Klasse
BaseDataBoundControl
BaseDataBoundControlDesigner-Klasse
WebControl
ControlDesigner-Klasse

Weitere Ressourcen

Übersicht über ASP.NET-Steuerelement-Designer
Exemplarische Vorgehensweise: Erstellen eines einfachen Steuerelement-Designers für ein Webserver-Steuerelement