快速业务通道

将ASP.NET控件加入快捷菜单

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
属性 描述 AutoHide 标志当用户鼠标移出控件区域时,是否自动隐藏快捷菜单 BoundControls 返回使用快捷菜单的控件集合 CellPadding 返回或设置每个菜单项周围的空间的象素数 ContextMenuItems 返回菜单项的集合 RolloverColor 返回或设置当鼠标划过菜单项时突显的颜色 方法 描述 GetEscReference 返回当用户按下Esc键时用于隐藏页面中的快捷菜单的JavaScrip代码 GetMenuReference 返回一段JavaScript代码,这段代码将关联到快捷菜单所对应的HTML元素上. GetOnClickReference 返回当用户在菜单区域外点击时隐藏快捷菜单的代码. 事件 描述 ItemCommand 当用户点击一个快捷菜单项进激发.

关键属性是ContextMenuItmes集合属性,它包含了ContextMenuItem类型的对象集合,每一个对象表示一个菜单项。ContextMenuItem类的源码如下:

[TypeConverter(typeof(ExpandableObjectConverter))]
public class ContextMenuItem
{
 public ContextMenuItem() {}
 public ContextMenuItem(string text, string commandName)
 {
_text = text;
_commandName = commandName;
 }
 private string _text;
 private string _commandName;
 private string _tooltip;
 public string Text
 {
get {return _text;}
set {_text = value;}
 }
 public string CommandName
 {
get {return _commandName;}
set {_commandName = value;}
 }
 public String Tool

个 oncontextmenu 属性。OK!完成!可以测试了。

慢着,让我们先来想一下ContexMenu控件和页中任意的显示快捷菜单的元素的绑定机制,这种机制对设计时的支持怎么样?理想的情况是:根据基类每一个Web控件直接暴露一个 ContextMenuId属性。然后在属性窗口中选择这个属性时,将看到在页面中的ContextMenu控件的列表。当然这些ContextMenu控件我们是已经创建了的;ContextMenuId属性在ASP.NET 1.x中不支持,在将来的ASP.NET2.0中也不支持。

在Visual Studio .NET 2003 集成开发环境中,ASP.NET复合控件可以很好的完成这一工作。可以通过使用类撰写组合现有控件来创作新控件。复合控件可呈现一个重新使用现有控件功能的用户界面。复合控件可以从子控件的属性合成属性并处理由子控件引发的事件。它还可以公开自定义属性和事件。

我不选择使用复合控件有以下几个原因:一个是Visual Studio .NET 2003对于Web窗体中的控件功能的扩展支持的不好,第二,在Visual Studio 2005的ASP.NET设计器中不再支持组件托盘区。Web窗体设计器现在仅支持ASP.NET控件而忽略象复合控件这样的非可视化的组件。Visual Studio 2005将不再信赖InitializeComponent节,并且不再在代码文件中自动添任何工具生成(tool-generated)的代码。ASP.NET控件也不设计成具有快捷菜单,所以要绑定快捷菜单只能通过快捷菜单控件自身的执行。这里我使用类似ASP.NET验证控件和被验证控件之间关联的形式。

编程接口

我们的ContextMenu控件从WebControl继承并执行INamingContainer接口

public class ContextMenu : WebControl, INamingContainer

图一控件的成员细节,如下:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号