快速业务通道

探讨ASP.NET 2.0中的Web控件改进技术

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
ction对象。

o_ActionLists.Add(New EmailContactActionList(ctlEmailContact))

你可能还记得我在EmailContactActionList类中创建的一个构造器,当时它 接收EmailContact控件的一个实例。如你所见,我在此也使用了该构造器—把我 设计的控件实例传递给它。

下面是控件设计器类用于构建灵敏标签的完整源码:

Private o_ActionLists As DesignerActionListCollection
Public Overrides ReadOnly Property ActionLists() As _
System.ComponentModel.Design.DesignerActionListCollection
Get
If o_ActionLists Is Nothing Then
o_ActionLists = New DesignerActionListCollection
Dim ctlEmailContact As EmailContact2 = _
CType(Component, EmailContact2)
o_ActionLists.Add( _
New EmailContactActionList(ctlEmailContact))
End If
Return o_ActionLists
End Get
End Property

在这个示例中,我仅创建了一个ActionList类,使用行为列表项填充它,并 且把该类添加到将被返回的DesignerActionListCollection类—这是通过重载控 件设计器的ActionLists属性来实现的。其实,我完全可以据实际需要创建许多 ActionList类,并且简单地把它们添加到ActionLists属性集合即可。如果我想 在逻辑上组织大量的灵敏标签项—为了在多个控件中重用它们时,这是很有用的 。至于决定为何以及何时这样做,则要依赖于实际来决定。

现在,在我编译完这个控件并把它拖动到一个表单上时,我将看到一个小箭 头出现在其右上角—点击它将显示你在图2中所看到的内容。在此,改变任何其 中一个属性都与在属性浏览器中改变完全一致。点击相应的链接将执行在 EmailContactActionList类的方法中定义的行为。

关于该控件,我们就讨论这些内容。记住一点:不要把暂时不需要的属性添 加到一个灵敏标签中。

二、模板设计时刻编辑

在以前的文章中,我曾经介绍过如何在你的控件中添加模板能力。在此,我 仅简单地涉及其中一点,因为它与这里的讨论有一些关系—我指的是从Web表单 设计界面上编辑模板内容的能力—在以前的ASP.NET 1.x时代这是不容易实现的 。

模板设计时刻编辑功能出现在例如GridView这样的控件中—你可以把该控件 置于“模板编辑”模式,然后只需把其它控件拖动到该模板区域即可。如果没有 这种方便的话,页面开发者必须切换到ASPX视图并象下面这样手工地创建模板内 容:

<dnd:EmailContact ID="ctl1" runat="server">
<HeaderTemplate>
<asp:Label ID="lbl1" runat="server" Text="Label" />
<asp:Textbox ID="txt1" runat="server"/>
</HeaderTemplate>
<FooterTemplate>
<asp:LinkButton ID="lnk1" runat="server" Text="LinkButton" />
</asp:LinkButton>
<asp:DropdownList ID ="ddl1" runat="server" />
</FooterTemplate>
</dnd:EmailContact>

尽管这也并不是太糟糕,但是使页面开发者使用设计器界面进行设计效果会 更好一些。

为了把模板编辑能力添加到一个控件上,你必须重载控件设计器类的 Initialize方法,并且设置一个标志以通知设计器你想支持模板编辑功能。

Public Overrides Sub Initialize( _
ByVal Component As IComponent)
MyBase.Initialize(Component)
SetViewFlags(ViewFlags.TemplateEditing, True)
End Sub

注意在此,我对基类方法进行了调用以确保我不取消自己不想实现的内容。 这个调用通知设计器它将支持模板编辑功能,但是你仍然需要对编辑实现部分进 行编程。

微软

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号