LoginDesigner 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在可视化设计器中为 Login Web 服务器控件提供设计时支持。
public ref class LoginDesigner : System::Web::UI::Design::WebControls::CompositeControlDesigner
public class LoginDesigner : System.Web.UI.Design.WebControls.CompositeControlDesigner
type LoginDesigner = class
inherit CompositeControlDesigner
Public Class LoginDesigner
Inherits CompositeControlDesigner
- 继承
示例
下面的代码示例演示如何扩展 LoginDesigner 类,以在设计时更改派生自 控件的 Login 控件的外观。
该示例从 Login派生MyLogin
控件。
MyLogin
是 控件的副本Login。 该示例还从 派生MyLoginDesigner
类,LoginDesigner并为 控件上的 MyLogin
应用 DesignerAttribute 属性MyLoginDesigner
。
重写 MyLoginDesigner
方法, PreFilterProperties 使 NamingContainer 属性在设计时在 “属性” 网格中可见。 如果 BorderStyle 控件的 GetDesignTimeHtml 属性MyLogin
为 NotSet 或 None 值,它将重写 方法,以在控件周围绘制蓝色虚线边框,使其范围更可见。 它重写 方法, GetErrorDesignTimeHtml 以便为包含以红色粗体文本呈现的错误消息的占位符生成标记。
using System;
using System.Web;
using System.Drawing;
using System.Web.UI.WebControls;
using System.Web.UI.Design.WebControls;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
namespace Examples.CS.WebControls.Design
{
// The MyLogin is a copy of the Login.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
[Designer(typeof(Examples.CS.WebControls.Design.MyLoginDesigner))]
public class MyLogin : Login
{
} // MyLogin
// Override members of the LoginDesigner.
[ReflectionPermission(SecurityAction.Demand, Flags=ReflectionPermissionFlag.MemberAccess)]
public class MyLoginDesigner : LoginDesigner
{
// Generate the design-time markup for the control when an error occurs.
protected override string GetErrorDesignTimeHtml(Exception e)
{
// Write the error message text in red, bold.
string errorRendering =
"<span style=\"font-weight:bold; color:Red; \">" +
e.Message + "</span>";
return CreatePlaceHolderDesignTimeHtml(errorRendering);
} // GetErrorDesignTimeHtml
// Shadow the control properties with design-time properties.
protected override void PreFilterProperties(IDictionary properties)
{
// Call the base method first.
base.PreFilterProperties(properties);
// Make the NamingContainer visible in the Properties grid.
PropertyDescriptor selectProp =
(PropertyDescriptor)properties["NamingContainer"];
properties["NamingContainer"] =
TypeDescriptor.CreateProperty(selectProp.ComponentType,
selectProp, BrowsableAttribute.Yes);
} // PreFilterProperties
// Generate the design-time markup.
public override string GetDesignTimeHtml()
{
// Make the control more visible in the designer. If the border
// style is None or NotSet, change the border to a blue dashed line.
MyLogin myLoginCtl = (MyLogin)ViewControl;
string markup = null;
// Check if the border style should be changed.
if (myLoginCtl.BorderStyle == BorderStyle.NotSet ||
myLoginCtl.BorderStyle == BorderStyle.None)
{
BorderStyle oldBorderStyle = myLoginCtl.BorderStyle;
Color oldBorderColor = myLoginCtl.BorderColor;
// Set the design time properties and catch any exceptions.
try
{
myLoginCtl.BorderStyle = BorderStyle.Dashed;
myLoginCtl.BorderColor = Color.Blue;
// Call the base method to generate the markup.
markup = base.GetDesignTimeHtml();
}
catch (Exception ex)
{
markup = GetErrorDesignTimeHtml(ex);
}
finally
{
// It is not necessary to restore the border properties
// to their original values because the ViewControl
// was used to reference the associated control and the
// UsePreviewControl was not overridden.
// myLoginCtl.BorderStyle = oldBorderStyle;
// myLoginCtl.BorderColor = oldBorderColor;
}
}
else
{
// Call the base method to generate the markup.
markup = base.GetDesignTimeHtml();
}
return markup;
} // GetDesignTimeHtml
} // MyLoginDesigner
} // Examples.CS.WebControls.Design
Imports System.Web
Imports System.Drawing
Imports System.Web.UI.WebControls
Imports System.Web.UI.Design.WebControls
Imports System.Collections
Imports System.ComponentModel
Imports System.Security.Permissions
Namespace Examples.VB.WebControls.Design
' The MyLogin is a copy of the Login.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<Designer(GetType(Examples.VB.WebControls.Design.MyLoginDesigner))> _
Public Class MyLogin
Inherits Login
End Class
' Override members of the LoginDesigner.
<ReflectionPermission(SecurityAction.Demand, Flags:=ReflectionPermissionFlag.MemberAccess)> _
Public Class MyLoginDesigner
Inherits LoginDesigner
' Generate the design-time markup for the control when an error occurs.
Protected Overrides Function GetErrorDesignTimeHtml( _
ByVal ex As Exception) As String
' Write the error message text in red, bold.
Dim errorRendering As String = _
"<span style=""font-weight:bold; color:Red; "">" & _
ex.Message & "</span>"
Return CreatePlaceHolderDesignTimeHtml(errorRendering)
End Function ' GetErrorDesignTimeHtml
' Shadow the control properties with design-time properties.
Protected Overrides Sub PreFilterProperties( _
ByVal properties As IDictionary)
' Call the base method first.
MyBase.PreFilterProperties(properties)
' Make the NamingContainer visible in the Properties grid.
Dim selectProp As PropertyDescriptor = _
CType(properties("NamingContainer"), PropertyDescriptor)
properties("NamingContainer") = _
TypeDescriptor.CreateProperty(selectProp.ComponentType, _
selectProp, BrowsableAttribute.Yes)
End Sub
' Generate the design-time markup.
Public Overrides Function GetDesignTimeHtml() As String
' Make the control more visible in the designer. If the border
' style is None or NotSet, change the border to a blue dashed line.
Dim myLoginCtl As MyLogin = CType(ViewControl, MyLogin)
Dim markup As String = Nothing
' Check if the border style should be changed.
If (myLoginCtl.BorderStyle = BorderStyle.NotSet Or _
myLoginCtl.BorderStyle = BorderStyle.None) Then
Dim oldBorderStyle As BorderStyle = myLoginCtl.BorderStyle
Dim oldBorderColor As Color = myLoginCtl.BorderColor
' Set the design time properties and catch any exceptions.
Try
myLoginCtl.BorderStyle = BorderStyle.Dashed
myLoginCtl.BorderColor = Color.Blue
' Call the base method to generate the markup.
markup = MyBase.GetDesignTimeHtml()
Catch ex As Exception
markup = GetErrorDesignTimeHtml(ex)
Finally
' It is not necessary to restore the border properties
' to their original values because the ViewControl
' was used to reference the associated control and the
' UsePreviewControl was not overridden.
' myLoginCtl.BorderStyle = oldBorderStyle
' myLoginCtl.BorderColor = oldBorderColor
End Try
Else
' Call the base method to generate the markup.
markup = MyBase.GetDesignTimeHtml()
End If
Return markup
End Function ' GetDesignTimeHtml
End Class
End Namespace ' Examples.VB.WebControls.Design
注解
控件 Login 显示允许用户登录到主机网站的用户界面。
在可视化设计器中,从“源”视图切换到“设计”视图时,将分析描述控件的 Login 标记源代码,并在设计图面上创建控件的设计时版本。 切换回源视图时,设计时控件将保留到标记源代码中,并编辑到网页的标记中。 类 LoginDesigner 为 控件提供设计时支持 Login 。
类 LoginDesigner 属性提供以下功能:
属性 ActionLists 返回 一个 DesignerActionListCollection 对象,该对象通常包含从 DesignerActionList 设计器继承树中每个级别的 类派生的对象。
属性 AutoFormats 返回用于在“ 自动格式 ”对话框中显示的格式设置方案的集合。
属性 TemplateGroups 返回关联 Login 控件和顶级 Login 模板的字段的模板组集合。
属性 UsePreviewControl 始终返回
true
,指示设计器创建关联的 Login 的临时副本以生成设计时标记。
类 LoginDesigner 方法提供以下功能:
方法 GetDesignTimeHtml 返回用于在设计时呈现关联的 Login 的标记。
方法 GetEditableDesignerRegionContent 为关联的 Login返回模板的序列化副本。
方法 GetErrorDesignTimeHtml 提供标记,该标记用于在发生错误时在设计时呈现关联的 Login 。
方法 Initialize 使设计器准备好查看、编辑和设计关联的 Login。
方法 PreFilterProperties 用于从 中删除属性、向添加其他属性或隐藏关联的 Login的属性。
方法 SetEditableDesignerRegionContent 从控件模板的序列化副本设置关联的 Login 的区域。
构造函数
LoginDesigner() |
初始化 LoginDesigner 类的新实例。 |
属性
ActionLists |
获取此设计器的设计器操作列表集合。 |
AllowResize |
获取或设置一个值,该值指定 LoginDesigner 控件是否允许调整大小。 |
AllowResize |
获取一个值,该值指示是否可以在设计时环境中调整控件的大小。 (继承自 ControlDesigner) |
AssociatedComponents |
获取与设计器所管理的组件关联的组件集合。 (继承自 ComponentDesigner) |
AutoFormats |
获取预定义的格式设置方案的集合,以便在“自动套用格式”对话框中显示。 |
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) |
RenderOuterTable |
获取或设置一个值,该值指定 LoginDesigner 控件是否使用外部表容器来应用内联 CSS 样式规则。 |
RootDesigner |
获取包含关联控件的 Web 窗体页的控件设计器。 (继承自 ControlDesigner) |
SetTextualDefaultProperty |
在可视化设计器中为 Login Web 服务器控件提供设计时支持。 (继承自 ComponentDesigner) |
ShadowProperties |
获取重写用户设置的属性值的集合。 (继承自 ComponentDesigner) |
ShouldCodeSerialize |
已过时.
获取或设置一个值,该值指示在序列化期间是否应为当前设计文档在代码隐藏文件中创建控件的字段声明。 (继承自 HtmlControlDesigner) |
Tag |
获取表示关联控件的 HTML 标记元素的对象。 (继承自 ControlDesigner) |
TemplateGroups |
获取用于关联控件字段的模板组集合。 |
UsePreviewControl |
获取一个值,该值指示设计器是否应使用临时副本取代与设计器关联的实际控件来生成设计时标记。 |
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) |