ControlDesigner.Initialize(IComponent) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
初始化控件设计器并加载指定的组件。
public:
override void Initialize(System::ComponentModel::IComponent ^ component);
public override void Initialize (System.ComponentModel.IComponent component);
override this.Initialize : System.ComponentModel.IComponent -> unit
Public Overrides Sub Initialize (component As IComponent)
参数
- component
- IComponent
正在设计的控件。
示例
下面的代码示例演示如何使用控件类和控件设计器类来重写 Initialize 方法以初始化内部变量。
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.Design;
using System.Web.UI.WebControls;
namespace AspNet.Samples
{
// Create a custom class to render the Text property
[Designer(typeof(SimpleDesigner)), DefaultProperty("Text"),
ToolboxData("<{0}:Simple runat=\"server\"></{0}:Simple>")]
public sealed class Simple : WebControl
{
public Simple()
{ }
// Create a Text property
[Browsable(true), Bindable(true),
PersistenceMode(PersistenceMode.Attribute)]
public string Text
{
get
{
object o = ViewState["TextProp"];
return (o == null) ? "Sample Text" : (string)o;
}
set { ViewState["TextProp"] = value; }
}
// Render the text inside the control
protected override void RenderContents(HtmlTextWriter writer)
{
writer.Write(Text);
}
}
}
namespace AspNet.Samples
{
//Create a designer class for the Simple control
public sealed class SimpleDesigner : ControlDesigner
{
// Declare a reference to the Simple class
private Simple simpleControl;
public SimpleDesigner()
{ }
public override void Initialize(IComponent ponent)
{
base.Initialize(ponent);
// Get a reference to the control
simpleControl = (Simple)ponent;
//Set Text to the control's ID
simpleControl.Text = simpleControl.ID;
}
// Allow resizing the control in the design host
public override bool AllowResize
{
get
{
return true;
}
}
public override string GetDesignTimeHtml()
{
if (simpleControl.Text.Length > 0)
{
string spec = "<a href='{0}.aspx'>{0}</a>";
return String.Format(spec, simpleControl.Text);
}
else
{
return GetEmptyDesignTimeHtml();
}
}
}
}
' Create a designer class for a custom class,
' named Simple.
Imports System.ComponentModel
Imports System.IO
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.WebControls
Imports System.Security.Permissions
Imports AspNet.Samples
Namespace AspNet.Samples
Public NotInheritable Class SimpleDesigner
Inherits System.Web.UI.Design.ControlDesigner
' Declare a reference to the Simple class
Private simpleControl As Simple
' Create a constructor for the designer class
' When an instance of the designer is created,
' the Text property of the instance of a Simple control
' is set to the designer's ID property.
' the designer is called.
Public Sub New()
simpleControl = CType(Component, Simple)
simpleControl.Text = Me.ID
End Sub
' Override the Initialize method to ensure
' that the designer is always working with
' an instance of the Simple class.
Overrides Public Sub Initialize( _
ByVal component As IComponent _
)
If Not (component Is simpleControl)
throw new ArgumentException( _
"The component must be an instance of the Simple class.", _
"component")
End If
MyBase.Initialize(component)
End Sub
Overrides Public ReadOnly Property AllowResize As Boolean
Get
Return True
End Get
End Property
Public Overrides Function GetDesignTimeHtml() As String
' Component is the instance of the component or control that
' this designer object is associated with. This property is
' inherited from System.ComponentModel.ComponentDesigner.
simpleControl = CType(Component, Simple)
If simpleControl.Text.Length > 0 Then
Dim sw As New StringWriter()
Dim tw As New HtmlTextWriter(sw)
Dim placeholderLink As New HyperLink()
' Put simpleControl.Text into the link's Text.
placeholderLink.Text = simpleControl.Text
placeholderLink.NavigateUrl = simpleControl.Text
placeholderLink.RenderControl(tw)
Return sw.ToString()
Else
Return GetEmptyDesignTimeHtml()
End If
End Function
' Override the OnControlResize method to
' set the IsDirty property to true and
' call the UpdateDesignTimeHtml method.
Overrides Protected Sub OnControlResize()
Me.IsDirty = True
Me.UpdateDesignTimeHtml
End Sub
End Class
End Namespace
注解
设计 Initialize 主机调用 方法以完成以下操作:
使用要设计的组件加载控件设计器。
使用 SetViewFlags 方法在 控件上设置视图。
验证关联的控件的类型是否正确。