?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

长沙麻将全球人:尊亿娱乐网址:实现类似“添加扩展程序…”的设计时支持

?

长沙转转麻将必胜口诀 www.fv7j.com.cn Ajax Control Toolkit这个控件库内包孕一些扩展控件,使用这些扩展控件,可以异常方便的为通俗的控件添加Ajax效果,例如,使用AutoCompleteExtender控件,可以为文本框添加自动完成的ajax效果。当然,这并不是本文想评论争论的内容。

将Ajax Control尊亿娱乐网址 Toolkit加入到Visual Studio 2008的对象箱中,并打开一个新的aspx文件,向里面拖入一个TextBox。这时,有趣的工作发生了,在TextBox的SmartTasks面板里,竟然呈现了一个“添加扩展法度榜样…”的链接!我又试着拖入一个Button,一个Panel,无一例外的,每个控件的SmartTasks面板的底部都呈现了“添加扩展法度榜样…”的链接。

近来我正盘算把保存、删除、关闭页面等功能抽象成动作,每一种动作对应一个自定义的Web控件,将某个动作控件附加到目标控件(例如Button)上面之后,目标控件就拥有了诸如保存、删除、关闭页面的功能。若何在WebForm设计器里为一个Button控件方便地附加动作?我想要的恰是类似“添加扩展法度榜样…”这样的效果。

开拓过自定义办事器控件的同伙应该知道,假如想给控件添加SmartTasks,必要重写ControlDesigner的ActionLists属性,并实现自己的DesignerActionList。显然,一个TextBox并不知道AjaxControlToolkit的存在,以是“添加扩展法度榜样…”这么一个DesignerActionMethodItem并不是它加进来的。那么,.net framework是否供给了某种接口,可以让我们为其余控件“动态的注入”DesignerActionItem呢?

经由过程对AjaxControlT尊亿娱乐网址oolKit.dll的钻研,我发明这些扩展控件的Designer并不认真供给“添加扩展法度榜样”这个Action,他们只认真供给响应扩展法度榜样对应的扩展内容,以是只能从Visual studio的webform designer作为进口来钻研。用reflector打开Microsoft Visual Studio 9.0\Common7\IDE\Microsoft.Web.Design.Client.dll,找到了IWebSmartTasksProvider接口,该接口有一个GetDesignerActionLists的措施,这个措施的返回值应该便是SmartTasks面板里显示的内容了。这个接口有3个实现类,DataFormDesigner、DataFormXslValueOfDesigner、ElementDesigner。从这三个类的命名上可以揣摸,ElementDesigner应该尊亿娱乐网址是用的最多的实现类了。ElementDesigner的GetDesignerActionLists的措施实现如下:

1: DesignerActionListCollection IWebSmartTasksProvider.GetDesignerActionLists()

2: {

3:DesignerActionListCollection componentActions = null;

4:if (this.Designer != null)

5:{

6:DesignerActionService service = (DesignerActionService) base.DesignerHost.GetService(typeof(DesignerActionService));

7:if (service != null)

8:{

9:componentActions = service.GetComponentActions(this.Designer.Component);

10:}

11:}

12:if (co尊亿娱乐网址mponentActions == null)

13:{

14:componentActions = new DesignerActionListCollectio尊亿娱乐网址n();

15:}

16:return componentActions;

17: }

18:

19:

20:

21:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: