EditorPartDesigner 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对 EditorPart 控件的设计时支持。
public ref class EditorPartDesigner : System::Web::UI::Design::WebControls::WebParts::PartDesigner
public class EditorPartDesigner : System.Web.UI.Design.WebControls.WebParts.PartDesigner
type EditorPartDesigner = class
inherit PartDesigner
Public Class EditorPartDesigner
Inherits PartDesigner
- 继承
-
EditorPartDesigner
示例
下面的代码示例创建一个简单的自定义 EditorPart 控件,该控件允许用户更改 ToolTip 目标控件的 属性。 关联的 EditorPartDesigner 验证控件,并在设计时将用户输入文本框替换为说明其已隐藏的标签。
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.ComponentModel;
using System.Security.Permissions;
using System.Web.UI.Design.WebControls.WebParts;
/// <summary>
/// SecretEditorPart is a custom EditorPart control that
/// allows the end user to change the ToolTip property of
/// a control by typing the value into a TextBox.
/// SecretEditorPartDesigner hides the TextBox at design
/// time via the view control and replaces it with the
/// words "The textbox is now hidden."
/// </summary>
namespace Samples.AspNet.CS.Controls
{
[Designer(typeof(SecretEditorPartDesigner))]
public class SecretEditorPart : EditorPart
{
public CheckBox UseCustom = new CheckBox();
public TextBox TTTextBox = new TextBox();
protected override void CreateChildControls()
{
base.CreateChildControls();
Controls.Add(UseCustom);
Literal lApply = new Literal();
lApply.Text = "Apply custom ToolTip<br />";
Controls.Add(lApply);
Controls.Add(TTTextBox);
}
public override bool ApplyChanges()
{
EnsureChildControls();
try
{
WebPartToEdit.ToolTip = TTTextBox.Text;
}
catch
{
return false;
}
return true;
}
public override void SyncChanges()
{
// Abstract method not implemented for this example
return;
}
}
public class SecretEditorPartDesigner : EditorPartDesigner
{
public override void Initialize(IComponent component)
{
// Validate the associated control
if (! (component is SecretEditorPart))
{
string msg = "The associated control must be of type 'SecretEditorPart'";
throw new ArgumentException(msg);
}
base.Initialize(component);
}
public override string GetDesignTimeHtml()
{
// Access the view control.
SecretEditorPart sep = (SecretEditorPart)ViewControl;
// Hide the textbox.
sep.TTTextBox.Visible = false;
// Now generate the base rendering.
string designTimeHtml = base.GetDesignTimeHtml();
// Insert some text.
string segment = "</div>";
designTimeHtml = designTimeHtml.Replace(segment,
"The textbox is now hidden." + segment);
// Return the modified rendering.
return designTimeHtml;
}
}
}
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.ComponentModel
Imports System.Security.Permissions
Imports System.Web.UI.Design.WebControls.WebParts
' SecretEditorPart is a custom EditorPart control that
' allows the end user to change the ToolTip property of
' a control by typing the value into a TextBox.
' SecretEditorPartDesigner hides the TextBox at design
' time via the view control and replaces it with the
' words "The textbox is now hidden."
Namespace Samples.AspNet.VB.Controls
<Designer(GetType(SecretEditorPartDesigner))> _
Public Class SecretEditorPart
Inherits EditorPart
Public UseCustom As New CheckBox()
Public TTTextBox As New TextBox()
Protected Overrides Sub CreateChildControls()
MyBase.CreateChildControls()
Controls.Add(UseCustom)
Dim lApply As New Literal()
lApply.Text = "Apply custom ToolTip<br />"
Controls.Add(lApply)
Controls.Add(TTTextBox)
End Sub
Public Overrides Function ApplyChanges() As Boolean
EnsureChildControls()
Try
WebPartToEdit.ToolTip = TTTextBox.Text
Catch
Return False
End Try
Return True
End Function
Public Overrides Sub SyncChanges()
' Abstract method not implemented for this example
Return
End Sub
End Class
Public Class SecretEditorPartDesigner
Inherits EditorPartDesigner
Public Overrides Sub Initialize(component As IComponent)
' Validate the associated control
If Not (TypeOf component Is SecretEditorPart) Then
Dim msg As String = "The associated control must be of type 'SecretEditorPart'"
Throw New ArgumentException(msg)
End If
MyBase.Initialize(component)
End Sub
Public Overrides Function GetDesignTimeHtml() As String
' Access the view control.
Dim sep As SecretEditorPart = DirectCast(ViewControl, SecretEditorPart)
' Hide the textbox.
sep.TTTextBox.Visible = False
' Now generate the base rendering.
Dim designTimeHtml As String = MyBase.GetDesignTimeHtml()
' Insert some text.
Dim segment As String = "</div>"
designTimeHtml = designTimeHtml.Replace(segment, "The textbox is now hidden." & segment)
' Return the modified rendering.
Return designTimeHtml
End Function
End Class
End Namespace
若要呈现自定义控件,页面必须具有 控件、一个WebPartManagerEditorZone包含 ZoneTemplate 控件的 ,以及一个WebPartZone包含要对其执行操作的控件EditorPart的 控件,如下面的代码示例所示。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register TagPrefix="ccl" Namespace="Samples.AspNet.CS.Controls" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>EditorPartDesigner Sample</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="WebPartManager1" runat="server">
</asp:WebPartManager><br />
<asp:EditorZone ID="EditorZone1" runat="server" Enabled="true" >
<ZoneTemplate>
<ccl:SecretEditorPart ID="SEPart1" runat="server" />
</ZoneTemplate>
</asp:EditorZone>
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<asp:Button ID="Button1" runat="server" Height="24px" Text="Button" />
</ZoneTemplate>
</asp:WebPartZone><br />
</div>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register TagPrefix="ccl" Namespace="Samples.AspNet.VB.Controls" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>EditorPartDesigner Sample</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="WebPartManager1" runat="server">
</asp:WebPartManager><br />
<asp:EditorZone ID="EditorZone1" runat="server" Enabled="true" >
<ZoneTemplate>
<ccl:SecretEditorPart ID="SEPart1" runat="server" />
</ZoneTemplate>
</asp:EditorZone>
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<asp:Button ID="Button1" runat="server" Height="24px" Text="Button" />
</ZoneTemplate>
</asp:WebPartZone><br />
</div>
</form>
</body>
</html>
EditorPart若要在运行时可用,必须在页面上启用编辑模式。 下面的代码示例演示如何使用代码隐藏文件执行此操作。
using System;
using System.Web.UI.WebControls.WebParts;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
{
// Make the 'Edit' verb available so the EditorZone can render
WebPartManager mgr = WebPartManager.GetCurrentWebPartManager(Page);
mgr.DisplayMode = mgr.SupportedDisplayModes["Edit"];
}
}
}
Imports System.Web.UI.WebControls.WebParts
Public Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs)
If True Then
' Make the 'Edit' verb available so the EditorZone can render
Dim mgr As WebPartManager = WebPartManager.GetCurrentWebPartManager(Page)
mgr.DisplayMode = mgr.SupportedDisplayModes("Edit")
End If
End Sub
End Class
注解
EditorPartDesigner 是基类的公共实现, PartDesigner 用于在设计时呈现 EditorPart 控件。 它添加了将区域信息从关联控件传递到设计视图的功能,但不会更改父控件的功能。
与其他控件设计器一样,可以通过继承EditorPartDesigner和重写 GetDesignTimeHtml 方法来更改自定义EditorPart控件的设计时呈现。 如果要重写 CreateViewControl 方法,请确保包含基实现,以便保留区域信息。
构造函数
EditorPartDesigner() |
初始化 EditorPartDesigner 类的新实例。 |
属性
ActionLists |
获取控件设计器的操作列表集合。 (继承自 ControlDesigner) |
AllowResize |
获取一个值,该值指示是否可以在设计时环境中调整控件的大小。 (继承自 ControlDesigner) |
AssociatedComponents |
获取与设计器所管理的组件关联的组件集合。 (继承自 ComponentDesigner) |
AutoFormats |
获取预定义自动格式设置方案的集合,这些方案将在设计时显示于关联控件的“自动套用格式”对话框中。 (继承自 ControlDesigner) |
Behavior |
已过时.
获取或设置与设计器关联的 DHTML 行为。 (继承自 HtmlControlDesigner) |
Component |
获取此设计器正在设计的组件。 (继承自 ComponentDesigner) |
DataBindings |
获取当前控件的数据绑定集合。 (继承自 HtmlControlDesigner) |
DataBindingsEnabled |
获取一个值,该值指示包含关联控件的区域是否支持数据绑定。 (继承自 ControlDesigner) |
DesignerState |
获取用于在设计时保持关联控件数据的对象。 (继承自 ControlDesigner) |
DesignTimeElement |
已过时.
获取一个设计时对象,该对象表示与设计图面上的 HtmlControlDesigner 对象关联的控件。 (继承自 HtmlControlDesigner) |
DesignTimeElementView |
已过时.
获取控件设计器的视图控件对象。 (继承自 ControlDesigner) |
DesignTimeHtmlRequiresLoadComplete |
已过时.
获取一个值,该值指示是否必须在设计宿主完成加载之后才能调用 GetDesignTimeHtml 方法。 (继承自 ControlDesigner) |
Expressions |
获取当前控件在设计时的表达式绑定。 (继承自 HtmlControlDesigner) |
HidePropertiesInTemplateMode |
获取一个值,该值指示当控件处于模板模式时,关联控件的属性是否被隐藏。 (继承自 ControlDesigner) |
ID |
获取或设置控件的 ID 字符串。 (继承自 ControlDesigner) |
InheritanceAttribute |
获取一个特性,该特性指示关联组件的继承类型。 (继承自 ComponentDesigner) |
Inherited |
获取一个值,该值指示是否继承此组件。 (继承自 ComponentDesigner) |
InTemplateMode |
获取一个值,该值指示控件在设计宿主中是否处于模板查看模式或模板编辑模式之一。 InTemplateMode 属性为只读。 (继承自 ControlDesigner) |
IsDirty |
已过时.
获取或设置一个值,该值指示 Web 服务器控件是否已被标记为已更改。 (继承自 ControlDesigner) |
ParentComponent |
获取此设计器的父组件。 (继承自 ComponentDesigner) |
ReadOnly |
已过时.
获取或设置一个值,该值指示控件的属性在设计时是否为只读。 (继承自 ControlDesigner) |
RootDesigner |
获取包含关联控件的 Web 窗体页的控件设计器。 (继承自 ControlDesigner) |
SetTextualDefaultProperty |
提供对 EditorPart 控件的设计时支持。 (继承自 ComponentDesigner) |
ShadowProperties |
获取重写用户设置的属性值的集合。 (继承自 ComponentDesigner) |
ShouldCodeSerialize |
已过时.
获取或设置一个值,该值指示在序列化期间是否应为当前设计文档在代码隐藏文件中创建控件的字段声明。 (继承自 HtmlControlDesigner) |
Tag |
获取表示关联控件的 HTML 标记元素的对象。 (继承自 ControlDesigner) |
TemplateGroups |
获取一个模板组集合,其中每个模板组包含一个或多个模板定义。 (继承自 ControlDesigner) |
UsePreviewControl |
获取一个值,该值指示设计器是否应使用临时副本取代与设计器关联的实际控件来生成设计时标记。 (继承自 PartDesigner) |
Verbs |
获取与设计器相关联的组件所支持的设计时谓词。 (继承自 ComponentDesigner) |
ViewControl |
获取或设置可用于预览设计时 HTML 标记的 Web 服务器控件。 (继承自 ControlDesigner) |
ViewControlCreated |
获取或设置一个值,该值指示是否已创建 |
Visible |
获取指示该控件在设计时是否可见的值。 (继承自 ControlDesigner) |
方法
显式接口实现
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) |