_cuclife.com
当前位置:cuclife.com > IT > ASP.NET >

.NET组件编程(7) Component DesignerAction(智能标

  Msdn上对DesignerActionList和DesignerAction的介绍为:DesignerAction 功能允许组件和控件显示区分大小写的信息和命令。DesignerAction 功能可被视为设计器谓词的替代项,因为 DesignerActionItem 可显示在智能标记面板中,也可显示在与组件或控件相关联的快捷菜单中。对于要在自定义组件和控件中添加智能标记支持的开发人员,DesignerActionList 类表示主交互点。DesignerActionList 是一个基类,组件开发人员可从中派生类来填充智能标记面板。智能标记面板将智能标记表示为类似于菜单的用户界面 (UI)。

  DesignerActionItem为智能面板上的一项,我们要向智能面板上添加一项,只要实例化一个DesignerActionItem,DesignerActionList类里有个可以被override的方法GetSortedActionItems()返回类型为DesignerActionItemCollection,它实际上就是返回智能面板上项的集合,我们只要把DesignerActionItem实例添加到GetSortedActionItems()的返回值即可。

  在.net中DesignerActionMethodItem、DesignerActionPropertyItem、DesignerActionTextItem、DesignerActionHeaderItem继承于DesignerActionItem,它们的成员大部分都是相同的,DesignerActionMethodItem主要在智能面板上生成一个方法项,点击这个项会去执行相应的方法;DesignerActionPropertyItem则把Component的属性显示在智能面板上,用户可以在职能面板上对Component的属性进行设置和修改;DesignerActionTextItem是在智能面板上生成一个文本项;而DesignerActionHeaderItem是继承于DesignerActionTextItem,但它多了分组的功能。

  代码演示如下:

  using System.Collections.Generic;

  using System;

  using System.Drawing;

  using System.Collections;

  using System.ComponentModel;

  using System.ComponentModel.Design;

  using System.Text;

  using System.Reflection;

  using System.Windows.Forms;

  namespace ClassLibrary1

  {

  [Designer(typeof(CustomerDesigner), typeof(IDesigner))]

  public class Customer : Component

  {

  private string _id;

  private Sex _sex;

  private string _address;

  public string Id

  {

  get { return _id; }

  set { _id = value; }

  }

  public Sex Sex

  {

  get { return _sex; }

  set { _sex = value; }

  }

  public string Address

  {

  get { return _address; }

  set { _address = value; }

  }

  }

  public enum Sex

  {

  男 = 0,

  女 = 1

  }

  public class CustomerDesigner : ComponentDesigner

  {

  private DesignerActionListCollection actionLists;

  // 只有get,没有set。

  public override DesignerActionListCollection ActionLists

  {

  get

  {

  if (null == actionLists)

  {

  actionLists = new DesignerActionListCollection();

  actionLists.Add(

  new CustomerActionList(this.Component));

  }

  return actionLists;

  }

文章来源:网络整理  本站编辑:兰特
上一篇:asp.net中oracle数据库的连接字符串
下一篇:.NET组件编程(6) Component Designer
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)