SupportsPreviewControlAttribute 类

定义

指示在设计时控制设计器是否需要控件的预览实例。 此类不能被继承。

public ref class SupportsPreviewControlAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class SupportsPreviewControlAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class)>]
type SupportsPreviewControlAttribute = class
    inherit Attribute
Public NotInheritable Class SupportsPreviewControlAttribute
Inherits Attribute
继承
SupportsPreviewControlAttribute
属性

示例

下面的代码示例演示如何使用 SupportsPreviewControlAttribute 属性标记控件设计器。 该代码示例从Label类派生 ASP.NET 服务器控件,并将 ASP.NET 服务器控件与自定义控件设计器实现相关联。 控件设计器类声明标记为属性 SupportsPreviewControl 设置为 true. 控件设计器重写该方法, GetDesignTimeHtml 并将控件的设计时 HTML 括在斜体标记中。

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

namespace ControlDesignerSamples.CS
{
    // Define a simple designer associated with a 
    // simple text web control.
    
    // Mark the designer with the SupportsPreviewControlAttribute set
    // to true.  This means the base.UsePreviewControl returns true,
    // and base.ViewControl returns a temporary preview copy of the control.
    [SupportsPreviewControl(true)]
    public class SimpleTextControlDesigner : TextControlDesigner
    {		
        // Override the base GetDesignTimeHtml method to display 
        // the design time text in italics.
        public override string GetDesignTimeHtml()
        {
            string html = String.Empty;
 
            try
            {
                // Initialize the return string to the default
                // design time html of the base TextControlDesigner.
                html = base.GetDesignTimeHtml();

                // Get the ViewControl for the associated control.
                Label ctrl = (Label)ViewControl;

                ctrl.Style.Add(HtmlTextWriterStyle.FontStyle, "Italic");
                html = base.GetDesignTimeHtml();
            }
            catch (System.Exception e)
            {
               if (String.IsNullOrEmpty(html))
               {
                   html = GetErrorDesignTimeHtml(e);
               }
            }
            
            return html;
        }
    }

    // Derive a simple Web control from Label to render a text string.
    // Associate this control with the SimpleTextControlDesigner.
    [DesignerAttribute("ControlDesignerSamples.CS.SimpleTextControlDesigner"),
    ToolboxData("<{0}:MyLabelControl Runat=\"Server\"><{0}:MyLabelControl>")]
    public class MyLabelControl : Label
    {
        // Use the Label control implementation, but associate
        // the derived class with the custom control designer.
    }
}
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.Design.WebControls
Imports System.Web.UI.WebControls
Imports System.Reflection

Namespace ControlDesignerSamples.VB

    ' Derive a simple Web control from Label to render a text string.
    ' Associate this control with the SimpleTextControlDesigner.
    <DesignerAttribute("ControlDesignerSamples.CS.SimpleTextControlDesigner"), _
    ToolboxData("<{0}:MyLabelControl Runat=""Server""><{0}:MyLabelControl>")> _
    Public Class MyLabelControl
        Inherits Label

        ' Use the Label control implementation, but associate
        ' the derived class with the custom control designer.
    End Class


    ' Mark the designer with the SupportsPreviewControlAttribute set
    ' to true.  This means the base.UsePreviewControl returns true,
    ' and base.ViewControl returns a temporary preview copy of the control.
    <SupportsPreviewControl(True)> _
    Public Class SimpleTextControlDesigner
        Inherits TextControlDesigner

        ' Override the base GetDesignTimeHtml method to display 
        ' the design time text in italics.
        Public Overrides Function GetDesignTimeHtml() As String
            Dim html As String = String.Empty

            Try
                ' Get the ViewControl for the associated control.
                Dim ctrl As Label = CType(ViewControl, Label)

                ' Set the default text, if necessary
                If ctrl.Text.Length = 0 Then
                    ctrl.Text = "Sample Text"
                End If

                ' Set the style to italic
                ctrl.Style.Add(HtmlTextWriterStyle.FontStyle, "italic")

                ' Let the base class create the HTML markup
                html = MyBase.GetDesignTimeHtml()
            Catch ex As Exception
                If String.IsNullOrEmpty(html) Then
                    ' Display the exception message
                    html = GetErrorDesignTimeHtml(ex)
                End If
            End Try

            Return html
        End Function

    End Class
End Namespace

注解

SupportsPreviewControlAttribute 属性应用于控件设计器类,以指示控件设计器支持的预览控件的类型。 使用此属性可更改预览控件进行设计时呈现,而不会影响关联控件的实际持久化实例。

通常,指定 SupportsPreviewControlAttribute 在声明派生自该类的 ControlDesigner 自定义设计器类时。 属性的值SupportsPreviewControlSupportsPreviewControlAttribute确定基ControlDesigner类中成员的行为UsePreviewControlViewControl

SupportsPreviewControl 属性设置为 true 指示设计器使用关联控件的临时副本生成设计时 HTML。 临时控件的更改不会持久保存。

SupportsPreviewControl属性设置为false指示设计器从ViewControl方法返回控件实例(特别是Component属性)。 对控件对象的更改将保留。

例如,类 CalendarDesigner 被标记为 SupportsPreviewControlAttribute “设置为 true” 。 设计器使用带有自动样式格式设置任务的预览控件,该任务允许用户预览可应用于日历的各种自动套用样式。 当用户在用户界面中选择不同的自动格式样式时,所选样式方案将应用于预览控件。 将新样式应用于预览控件不会更改应用于设计器中控件实例 Calendar 的方案。

如果未在控件设计器声明中指定, SupportsPreviewControlAttributeControlDesigner 行为等效于指定 SupportsPreviewControl as false

备注

派生自该类的 ControlDesigner 设计器类可以重写 UsePreviewControlViewControl 成员,并忽略该 SupportsPreviewControlAttribute 属性。 若要确定预期行为 ViewControlUsePreviewControl请参阅派生控件设计器类的参考文档。

有关使用属性的常规信息,请参阅 属性概述属性。 有关设计时属性的详细信息,请参阅 属性和Design-Time支持

构造函数

SupportsPreviewControlAttribute(Boolean)

初始化 SupportsPreviewControlAttribute 类的新实例,并设置 SupportsPreviewControl 属性的初始值。

字段

Default

获取设置为默认预览值的 SupportsPreviewControlAttribute 类的实例。 此字段为只读。

属性

SupportsPreviewControl

获取一个指示设计时控件设计器是否需要临时预览控件的值。

TypeId

在派生类中实现时,获取此 Attribute 的唯一标识符。

(继承自 Attribute)

方法

Equals(Object)

确定指定的对象表示的预览特性设置是否与 SupportsPreviewControlAttribute 类当前实例的设置相同。

GetHashCode()

返回 SupportsPreviewControlAttribute 类的此实例的哈希代码。

GetType()

获取当前实例的 Type

(继承自 Object)
IsDefaultAttribute()

指示 SupportsPreviewControlAttribute 类的当前实例是否设置为默认的预览特性值。

Match(Object)

当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。

(继承自 Attribute)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

显式接口实现

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

将一组名称映射为对应的一组调度标识符。

(继承自 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

检索对象的类型信息,然后可以使用该信息获取接口的类型信息。

(继承自 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

检索对象提供的类型信息接口的数量(0 或 1)。

(继承自 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供对某一对象公开的属性和方法的访问。

(继承自 Attribute)

适用于

另请参阅