ControlDesigner 類別

定義

提供基底控制項設計工具類別,以擴充 Web 伺服器控制項的設計模式行為。

public ref class ControlDesigner : System::Web::UI::Design::HtmlControlDesigner
public class ControlDesigner : System.Web.UI.Design.HtmlControlDesigner
type ControlDesigner = class
    inherit HtmlControlDesigner
Public Class ControlDesigner
Inherits HtmlControlDesigner
繼承
衍生

範例

下列程式碼範例示範如何建立衍生自 類別的 ControlDesigner 簡單設計工具類別。 此控制項設計工具支援自訂 TextControl 類別,並提供命令,以在設計階段變更控制項的文字大小。 控制項設計工具會藉由在 類別的物件宣告 TextControlDesignerAttribute 指定控制項設計工具,來與控制項相關聯。 在自訂 ActionList 類別的 方法中找到 ToggleTextSize 將屬性從控制項設計工具保存到 HTML 標籤的索引鍵。

若要嘗試此範例,請新增System.Design.dll元件的參考,並編譯器代碼。

using System;
using System.Web.UI;
using System.Drawing;
using System.Web.UI.Design;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.ComponentModel.Design;

namespace ASPNet.Design.Samples.CS
{
    // Simple text Web control renders a text string.
    // This control is associated with the TextSizeWebControlDesigner.
    [DesignerAttribute(typeof(TextSizeWebControlDesigner)),
    ToolboxData("<{0}:TextControl runat=\"server\"></{0}:TextControl>")]
    public class TextControl : Label
    {
        private bool _largeText = true;

        // Constructor
        public TextControl()
        {
            Text = "Test Phrase";
            SetSize();
        }

        // Determines whether the text is large or small
        [Bindable(true), Category("Appearance"), DefaultValue("true")]
        public bool LargeText
        {
            get { return _largeText; }
            set
            {
                _largeText = value;
                SetSize();
            }
        }

        // Applies the LargeText property to the control
        private void SetSize()
        {
            if (LargeText)
                this.Font.Size = FontUnit.XLarge;
            else
                this.Font.Size = FontUnit.Small;
        }
    }

    // This control designer offers DesignerActionList commands
    // that can alter the design time html of the associated control.
    public class TextSizeWebControlDesigner : ControlDesigner
    {
        private DesignerActionListCollection _actionLists = null;

        // Do not allow direct resizing of the control
        public override bool AllowResize
        {
            get { return false; }
        }

        // Return a custom ActionList collection
        public override DesignerActionListCollection ActionLists
        {
            get
            {
                if (_actionLists == null)
                {
                    _actionLists = new DesignerActionListCollection();
                    _actionLists.AddRange(base.ActionLists);

                    // Add a custom DesignerActionList
                    _actionLists.Add(new ActionList(this));
                }
                return _actionLists;
            }
        }

        public class ActionList : DesignerActionList
        {
            private TextSizeWebControlDesigner _parent;
            private DesignerActionItemCollection _items;

            // Constructor
            public ActionList(TextSizeWebControlDesigner parent)
                : base(parent.Component)
            {
                _parent = parent;
            }

            // Create the ActionItem collection and add one command
            public override DesignerActionItemCollection GetSortedActionItems()
            {
                if (_items == null)
                {
                    _items = new DesignerActionItemCollection();
                    _items.Add(new DesignerActionMethodItem(this, "ToggleLargeText", "Toggle Text Size", true));
                }
                return _items;
            }

            // ActionList command to change the text size
            private void ToggleLargeText()
            {
                // Get a reference to the parent designer's associated control
                TextControl ctl = (TextControl)_parent.Component;

                // Get a reference to the control's LargeText property
                PropertyDescriptor propDesc = TypeDescriptor.GetProperties(ctl)["LargeText"];

                // Get the current value of the property
                bool v = (bool)propDesc.GetValue(ctl);

                // Toggle the property value
                propDesc.SetValue(ctl, !v);
            }
        }
    }
}
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.ComponentModel.Design

Namespace ASPNet.Design.Samples.VB

    ' Simple text Web control renders a text string.
    ' This control is associated with the TextSizeWebControlDesigner.
    <DesignerAttribute(GetType(TextSizeWebControlDesigner)), _
        ToolboxData("<{0}:TextControl runat='server'></{0}:TextControl>")> _
    Public Class TextControl
        Inherits Label

        Private _largeText As Boolean = True

        ' Constructor
        Public Sub New()
            Text = "Test Phrase"
            SetSize()
        End Sub

        ' Determines whether the text is large or small
        <Bindable(True), Category("Appearance"), DefaultValue(True)> _
        Public Property LargeText() As Boolean
            Get
                Return _largeText
            End Get
            Set(ByVal value As Boolean)
                _largeText = value
                SetSize()
            End Set
        End Property

        ' Applies the LargeText property to the control
        Private Sub SetSize()
            If LargeText Then
                Me.Font.Size = FontUnit.XLarge
            Else
                Me.Font.Size = FontUnit.Small
            End If
        End Sub
    End Class


    ' This control designer offers DesignerActionList commands
    ' that can alter the design time html of the associated control.
    Public Class TextSizeWebControlDesigner
        Inherits ControlDesigner

        Private _actionLists As DesignerActionListCollection

        ' Do not allow direct resizing of the control
        Public Overrides ReadOnly Property AllowResize() As Boolean
            Get
                Return False
            End Get
        End Property

        ' Return a custom ActionList collection
        Public Overrides ReadOnly Property ActionLists() As System.ComponentModel.Design.DesignerActionListCollection
            Get
                If IsNothing(_actionLists) Then
                    _actionLists = New DesignerActionListCollection()
                    _actionLists.AddRange(MyBase.ActionLists)

                    ' Add a custom DesignerActionList
                    _actionLists.Add(New ActionList(Me))
                End If

                Return _actionLists
            End Get
        End Property

        ' Create a custom class of DesignerActionList
        Public Class ActionList
            Inherits DesignerActionList
            Private _parent As TextSizeWebControlDesigner
            Private _items As DesignerActionItemCollection

            ' Constructor
            Public Sub New(ByRef parent As TextSizeWebControlDesigner)
                MyBase.New(parent.Component)
                _parent = parent
            End Sub

            ' Create the ActionItem collection and add one command
            Public Overrides Function GetSortedActionItems() As DesignerActionItemCollection
                If IsNothing(_items) Then
                    _items = New DesignerActionItemCollection()
                    _items.Add(New DesignerActionMethodItem(Me, "ToggleLargeText", "Toggle Text Size", True))
                End If

                Return _items
            End Function

            ' ActionList command to change the text size
            Private Sub ToggleLargeText()
                ' Get a reference to the parent designer's associated control
                Dim ctl As TextControl = CType(_parent.Component, TextControl)

                ' Get a reference to the control's LargeText property
                Dim propDesc As PropertyDescriptor = TypeDescriptor.GetProperties(ctl)("LargeText")

                ' Get the current value of the property
                Dim v As Boolean = CType(propDesc.GetValue(ctl), Boolean)
                ' Toggle the property value
                propDesc.SetValue(ctl, (Not v))
            End Sub
        End Class
    End Class
End Namespace
<%@ Page Language="C#" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="ASPNet.Design.Samples.CS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    <aspSample:TextControl ID="TextControl1" runat="server">
    </aspSample:TextControl>

    
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="ASPNet.Design.Samples.VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <aspSample:TextControl ID="TextControl1" runat="server">
        </aspSample:TextControl>
    
    </div>
    </form>
</body>
</html>

備註

類別 ControlDesigner 提供基底控制項設計工具類別,可繼承自和擴充,以提供設計主機中 Web 服務器控制項的設計階段支援,例如 Visual Studio 2005。

使用設計階段轉譯的物件模型會透過舊版改善,並具有下列新基類來提供簡化物件模型的存取權:

自動格式化

您可以建立各種不同的自動和預先定義格式,以簡化將複雜樣式變更套用至自訂網頁伺服器控制項的頁面開發人員程式。 例如, TableDesigner 衍生自 類別的 ControlDesigner 控制項提供許多要從中選擇的自動格式。 若要在自訂控制項中實作並提供自動格式設定,請使用下列功能:

動作清單 (智慧標籤)

動作清單是使用控制項的頁面開發人員可以在設計階段使用者介面中執行的重要或廣泛使用工作的功能表, (UI) ,例如 Visual Studio 2005。 例如,控制項的設計階段檢視可以提供可用工作的功能表。 這包括自動格式化控制項的工作。 若要瞭解動作清單,請從下列功能開始:

控制Designer區域

區域是 Web 服務器控制項之設計階段檢視中的可編輯區域。 這項功能在設計階段提供類似 WYSIWYG 的範本內容、內部控制項和屬性編輯。 您可以讓控制項設計工具在區域中建立控制項,或使用 [工具箱] 將控制項拖放到區域。 區域是使用下列功能來管理:

範本

建立用於設計階段編輯樣板化控制項的 UI 模型,例如 GridView 控制項,已大幅改善舊版。 您可以建立包含控制項各種部分範本的複雜自訂控制項,而自訂控制項設計工具可協助使用下列功能修改範本的頁面開發人員:

Design-Time轉譯

類別 ControlDesigner 具有下列方法來支援 Web 服務器控制項的設計階段轉譯。 這些方法大多與舊版相同:

建構函式

ControlDesigner()

初始化 ControlDesigner 類別的新執行個體。

屬性

ActionLists

取得控制項設計工具的動作清單集合。

ActionLists

取得與設計工具相關之元件所支援的設計階段動作清單。

(繼承來源 ComponentDesigner)
AllowResize

取得值,指出是否可在設計階段環境中調整控制項的大小。

AssociatedComponents

取得元件集合,該集合與設計工具管理的元件相關聯。

(繼承來源 ComponentDesigner)
AutoFormats

針對設計階段的相關聯控制項,取得要在 [自動格式化] 對話方塊中顯示之預先定義的自動格式化配置集合。

Behavior
已淘汰.

取得或設定與設計工具相關聯的 DHTML 行為。

(繼承來源 HtmlControlDesigner)
Component

取得這個設計工具正在設計的元件。

(繼承來源 ComponentDesigner)
DataBindings

取得目前控制項的資料繫結 (Data Binding) 集合。

(繼承來源 HtmlControlDesigner)
DataBindingsEnabled

取得值,指出關聯控制項的包含區域是否支援資料繫結。

DesignerState

取得物件,用於在設計階段保存關聯控制項的資料。

DesignTimeElement
已淘汰.

取得設計階段物件,表示與設計介面上 HtmlControlDesigner 物件相關聯的控制項。

(繼承來源 HtmlControlDesigner)
DesignTimeElementView
已淘汰.

取得控制項設計工具的檢視控制項物件。

DesignTimeHtmlRequiresLoadComplete
已淘汰.

取得值,指出設計主應用程式在呼叫 GetDesignTimeHtml 方法之前是否必須完成載入。

Expressions

在設計階段取得目前控制項的運算式繫結。

(繼承來源 HtmlControlDesigner)
HidePropertiesInTemplateMode

取得值,指示當控制項處於樣板模式時,關聯控制項的屬性是否會隱藏。

ID

取得或設定控制項的 ID 字串。

InheritanceAttribute

取得屬性 (Attribute),表示相關元件的繼承 (Inheritance) 型別。

(繼承來源 ComponentDesigner)
Inherited

取得值,表示是否要繼承這個元件。

(繼承來源 ComponentDesigner)
InTemplateMode

取得值,指出控制項在設計主應用程式中處於樣板檢視模式還是編輯模式。 InTemplateMode 屬性是唯讀的。

IsDirty
已淘汰.

取得或設定值,指出 Web 伺服器控制項是否已標記為變更。

ParentComponent

取得這個設計工具的父元件。

(繼承來源 ComponentDesigner)
ReadOnly
已淘汰.

取得或設定值,指出控制項屬性於設計階段是否為唯讀。

RootDesigner

為包含關聯控制項的 Web Form 網頁,取得控制項設計工具。

SetTextualDefaultProperty

提供基底控制項設計工具類別,以擴充 Web 伺服器控制項的設計模式行為。

(繼承來源 ComponentDesigner)
ShadowProperties

取得覆寫使用者設定的屬性值集合。

(繼承來源 ComponentDesigner)
ShouldCodeSerialize
已淘汰.

取得或設定值,指出是否應該於序列化 (Serialization) 期間,在程式碼後置 (Code-Behind) 檔案中為目前設計文件建立控制項的欄位宣告。

(繼承來源 HtmlControlDesigner)
Tag

取得物件,表示關聯控制項的 HTML 標記項目。

TemplateGroups

取得範本群組集合,各範本群組包含一個或多個範本定義。

UsePreviewControl

取得值,其中該值會表示控制項設計工具是否使用暫時預覽控制項以產生設計階段 HTML 標記。

Verbs

取得與設計工具相關元件所支援的設計階段動詞命令 (Verb)。

(繼承來源 ComponentDesigner)
ViewControl

取得或設定 Web 伺服器控制項,可用於預覽設計階段的 HTML 標記。

ViewControlCreated

取得或設定值,指出是否已建立 View 控制項以在設計介面上顯示。

Visible

取得值,這個值表示控制項在設計階段是否為可見的。

方法

CreateErrorDesignTimeHtml(String)

建立 HTML 標記,以在設計階段顯示指定的錯誤訊息。

CreateErrorDesignTimeHtml(String, Exception)

建立 HTML 標記,以在設計階段顯示指定的例外狀況錯誤訊息。

CreatePlaceHolderDesignTimeHtml()

提供簡單矩形預留位置表示,顯示控制項的型別和 ID。

CreatePlaceHolderDesignTimeHtml(String)

提供簡單矩形預留位置表示,顯示控制項的型別和 ID,以及其他指定的指示或資訊。

CreateViewControl()

傳回關聯控制項的複本,以便在設計介面上檢視或呈現。

Dispose()

釋放 ComponentDesigner 所使用的所有資源。

(繼承來源 ComponentDesigner)
Dispose(Boolean)

釋放 HtmlControlDesigner 物件所使用的 Unmanaged 資源,並選擇性釋放 Managed 資源。

(繼承來源 HtmlControlDesigner)
DoDefaultAction()

在元件上預設事件的原始程式碼檔案中建立方法簽章,並將使用者的游標巡覽至該位置。

(繼承來源 ComponentDesigner)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetBounds()

擷取矩形的座標,表示設計介面上所顯示控制項的界限。

GetDesignTimeHtml()

擷取在設計階段用來表示控制項的 HTML 標記。

GetDesignTimeHtml(DesignerRegionCollection)

擷取要顯示控制項的 HTML 標記,並將目前控制項設計工具區域填入集合中。

GetDesignTimeResourceProviderFactory(IServiceProvider)

根據網站組態檔中的全球化設定,傳回適當的資源提供者 Factory。

GetEditableDesignerRegionContent(EditableDesignerRegion)

針對關聯控制項設計階段檢視的可編輯區域,傳回內容。

GetEmptyDesignTimeHtml()

擷取 HTML 標記,以在設計階段呈現在執行階段沒有視覺表示的 Web 伺服器控制項。

GetErrorDesignTimeHtml(Exception)

擷取可提供所指定例外狀況之相關資訊的 HTML 標記。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetPersistenceContent()

在設計階段擷取控制項的永久性內部 HTML 標記。

GetPersistInnerHtml()
已淘汰.

擷取控制項的永久性內部 HTML 標記。

GetService(Type)

嘗試從設計工具元件的設計模式站台擷取指定的服務類型。

(繼承來源 ComponentDesigner)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
GetViewRendering()

擷取物件,其中包含關聯控制項之內容和區域的設計階段標記。

GetViewRendering(Control)

擷取物件,其中包含指定的控制項之內容和區域的設計階段標記。

GetViewRendering(ControlDesigner)

擷取物件,其中包含設計階段標記,用於指定的控制項設計工具之關聯控制項的內容和區域。

Initialize(IComponent)

初始化控制項設計工具並載入指定的元件。

InitializeExistingComponent(IDictionary)

重新初始化現有的元件。

(繼承來源 ComponentDesigner)
InitializeNewComponent(IDictionary)

初始化新建立的元件。

(繼承來源 ComponentDesigner)
InitializeNonDefault()
已淘汰.
已淘汰.

初始化已初始化為預設值以外設定的匯入元件設定。

(繼承來源 ComponentDesigner)
Invalidate()

使設計介面上所顯示之控制項的整個區域失效,並傳送信號給控制項設計工具,要求重繪控制項。

Invalidate(Rectangle)

使設計介面上所顯示之控制項的指定區域失效,並傳送信號給控制項設計工具,要求重繪控制項。

InvokeGetInheritanceAttribute(ComponentDesigner)

取得指定 InheritanceAttributeComponentDesigner

(繼承來源 ComponentDesigner)
InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String)

使用已指定可以設計主應用程式的復原功能復原為單位的參數,將一系列變更包裝在交易之中。

InvokeTransactedChange(IComponent, TransactedChangeCallback, Object, String, MemberDescriptor)

使用已指定可以設計主應用程式的復原功能復原為單位的參數,將一系列變更包裝在交易之中。

InvokeTransactedChange(IServiceProvider, IComponent, TransactedChangeCallback, Object, String, MemberDescriptor)

使用已指定可以設計主應用程式的復原功能復原為單位的參數,將一系列變更包裝在交易之中。

IsPropertyBound(String)
已淘汰.

擷取值,指出關聯控制項的指定屬性是否已資料繫結。

Localize(IDesignTimeResourceWriter)

使用提供的資源寫入器將關聯控制項的可當地語系化屬性保存到設計主應用程式的資源中。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
OnAutoFormatApplied(DesignerAutoFormat)

將預先定義的自動格式化配置套用至關聯的控制項時呼叫。

OnBehaviorAttached()

當控制項設計工具附加至 Behavior 物件時呼叫。

OnBehaviorAttached()
已淘汰.

當行為與項目關聯時呼叫。

(繼承來源 HtmlControlDesigner)
OnBehaviorDetaching()
已淘汰.

當行為解除與項目的關聯時呼叫。

(繼承來源 HtmlControlDesigner)
OnBindingsCollectionChanged(String)
已淘汰.

當資料繫結集合變更時呼叫。

OnClick(DesignerRegionMouseEventArgs)

當使用者在設計階段按一下關聯控制項時,由設計主應用程式呼叫。

OnComponentChanged(Object, ComponentChangedEventArgs)

當關聯的控制項變更時呼叫。

OnComponentChanging(Object, ComponentChangingEventArgs)

表示將處理關聯控制項之 ComponentChanging 事件的方法。

OnControlResize()
已淘汰.

於設計階段在設計主應用程式中重新調整關聯之 Web 伺服器控制項的大小時呼叫。

OnPaint(PaintEventArgs)

CustomPaint 值為 true 的情況下,控制項設計工具在設計介面中繪製關聯的控制項便會呼叫。

OnSetComponentDefaults()
已淘汰.
已淘汰.

設定元件的預設屬性。

(繼承來源 ComponentDesigner)
OnSetParent()

提供當關聯的控制項附加至父控制項時,執行其他處理的方法。

(繼承來源 HtmlControlDesigner)
PostFilterAttributes(IDictionary)

允許設計工具變更或移除它經由 TypeDescriptor 公開的屬性集中的項目。

(繼承來源 ComponentDesigner)
PostFilterEvents(IDictionary)

允許設計工具變更或移除它經由 TypeDescriptor 公開的事件集中的項目。

(繼承來源 ComponentDesigner)
PostFilterProperties(IDictionary)

允許設計工具變更或移除它經由 TypeDescriptor 公開的屬性集中的項目。

(繼承來源 ComponentDesigner)
PreFilterAttributes(IDictionary)

允許設計工具加入至它經由 TypeDescriptor 公開的屬性集。

(繼承來源 ComponentDesigner)
PreFilterEvents(IDictionary)

設定在設計階段公開 (Expose) 的針對元件之 TypeDescriptor 物件的事件清單。

(繼承來源 HtmlControlDesigner)
PreFilterProperties(IDictionary)

在設計階段將屬性加入至設計主應用程式中的 [屬性] 方格或從其中移除屬性,或提供新的設計階段屬性,這些屬性可能會對應至關聯控制項的屬性。

RaiseComponentChanged(MemberDescriptor, Object, Object)

告知 IComponentChangeService 這個元件已經變更。

(繼承來源 ComponentDesigner)
RaiseComponentChanging(MemberDescriptor)

告知 IComponentChangeService 這個元件正要變更。

(繼承來源 ComponentDesigner)
RaiseResizeEvent()
已淘汰.

引發 OnControlResize() 事件。

RegisterClone(Object, Object)

在複製 (Clone) 的控制項中註冊內部資料。

SetEditableDesignerRegionContent(EditableDesignerRegion, String)

在設計階段指定控制項之可編輯區域的內容。

SetRegionContent(EditableDesignerRegion, String)

指定控制項之設計階段檢視的可編輯區域內容。

SetViewFlags(ViewFlags, Boolean)

指派指定的位元 (Bitwise) ViewFlags 列舉型別給指定的旗標值。

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)
UpdateDesignTimeHtml()

藉由呼叫 GetDesignTimeHtml 方法,為關聯的 Web 伺服器控制項重新整理設計階段 HTML 標記。

明確介面實作

IDesignerFilter.PostFilterAttributes(IDictionary)

如需這個成員的描述,請參閱 PostFilterAttributes(IDictionary) 方法。

(繼承來源 ComponentDesigner)
IDesignerFilter.PostFilterEvents(IDictionary)

如需這個成員的描述,請參閱 PostFilterEvents(IDictionary) 方法。

(繼承來源 ComponentDesigner)
IDesignerFilter.PostFilterProperties(IDictionary)

如需這個成員的描述,請參閱 PostFilterProperties(IDictionary) 方法。

(繼承來源 ComponentDesigner)
IDesignerFilter.PreFilterAttributes(IDictionary)

如需這個成員的描述,請參閱 PreFilterAttributes(IDictionary) 方法。

(繼承來源 ComponentDesigner)
IDesignerFilter.PreFilterEvents(IDictionary)

如需這個成員的描述,請參閱 PreFilterEvents(IDictionary) 方法。

(繼承來源 ComponentDesigner)
IDesignerFilter.PreFilterProperties(IDictionary)

如需這個成員的描述,請參閱 PreFilterProperties(IDictionary) 方法。

(繼承來源 ComponentDesigner)
ITreeDesigner.Children

如需這個成員的描述,請參閱 Children 屬性。

(繼承來源 ComponentDesigner)
ITreeDesigner.Parent

如需這個成員的描述,請參閱 Parent 屬性。

(繼承來源 ComponentDesigner)

適用於

另請參閱