插件式设计开发心得(三)

来源:互联网 发布:复旦东区网络使用 编辑:程序博客网 时间:2024/06/03 16:42

接昨天,下面来实现各种具体插件类型的接口,ITabPage、IToolStrip、IToolBarDef、IMenuDef。

首先是ITabPage接口,代码如下:

Code:
  1. namespace WingOfDream.SystemTool.CoreFramework   
  2. {   
  3.     using System.Drawing;   
  4.     using System.Windows.Forms;   
  5.     /// <summary>   
  6.     /// 所有TabPage的基接口   
  7.     /// </summary>   
  8.     public interface ITabPage : IPlugin   
  9.     {   
  10.         /// <summary>   
  11.         /// 显示在tab上的图片索引   
  12.         /// </summary>   
  13.         int ImageIndex { get; }   
  14.         /// <summary>   
  15.         /// 背景图片   
  16.         /// </summary>   
  17.         Bitmap BackgroundImage { get; }   
  18.         /// <summary>   
  19.         /// 背景图片布局   
  20.         /// </summary>   
  21.         ImageLayout BackgroundImageLayout { get; }   
  22.         /// <summary>   
  23.         /// 是否选中   
  24.         /// </summary>   
  25.         bool Selected { get; }   
  26.         /// <summary>   
  27.         /// 是否可用   
  28.         /// </summary>   
  29.         bool Enabled { get; }   
  30.         /// <summary>   
  31.         /// TabPage名字   
  32.         /// </summary>   
  33.         string Name { get; }   
  34.         /// <summary>   
  35.         /// 创建TabPage   
  36.         /// </summary>   
  37.         /// <param name="hook"></param>   
  38.         void OnCreate(IApplication hook);   
  39.         /// <summary>   
  40.         /// 鼠标移动捕捉事件   
  41.         /// </summary>   
  42.         void OnMouseMove();   
  43.         /// <summary>   
  44.         /// 鼠标按下捕捉事件   
  45.         /// </summary>   
  46.         void OnMouseDown();   
  47.         /// <summary>   
  48.         /// 鼠标移动到tabpage上显示的文字   
  49.         /// </summary>   
  50.         string ToolTipText { get; }   
  51.         /// <summary>   
  52.         /// 是否可视   
  53.         /// </summary>   
  54.         bool Visiable { get; }   
  55.     }   
  56. }   

接着是IToolStrip接口,该接口表示一条ToolStrip工具条,其中包含各种命令、工具按钮。代码如下:

Code:
  1. namespace WingOfDream.SystemTool.CoreFramework   
  2. {   
  3.     public interface IToolStrip : IPlugin   
  4.     {   
  5.         /// <summary>   
  6.         /// 是否可用   
  7.         /// </summary>   
  8.         bool Enabled { get; }   
  9.         /// <summary>   
  10.         /// 名字   
  11.         /// </summary>   
  12.         string Name { get; }   
  13.         /// <summary>   
  14.         /// 创建ToolStrip   
  15.         /// </summary>   
  16.         /// <param name="hook"></param>   
  17.         void OnCreate(IApplication hook);   
  18.         /// <summary>   
  19.         /// 鼠标移动到ToolStrip上显示的文字   
  20.         /// </summary>   
  21.         string ToolTipText { get; }   
  22.         /// <summary>   
  23.         /// 是否可见   
  24.         /// </summary>   
  25.         bool Visiable { get; }   
  26.     }   
  27. }  

下面是工具条IToolBarDef和菜单栏IMenuDef,代码如下:

Code:
  1. namespace WingOfDream.SystemTool.CoreFramework   
  2. {   
  3.     public interface IToolBarDef : IPlugin   
  4.     {   
  5.         /// <summary>   
  6.         /// Item数量   
  7.         /// </summary>   
  8.         int ItemCount { get; }   
  9.         /// <summary>   
  10.         /// 访问每个Item   
  11.         /// </summary>   
  12.         /// <param name="pos"></param>   
  13.         /// <param name="item"></param>   
  14.         void GetItemInfo(int pos, ItemDef item);   
  15.     }   
  16. }   
  17.   
  18.   
  19.   
  20.   
  21.   
  22.   
  23. namespace WingOfDream.SystemTool.CoreFramework   
  24. {   
  25.     public interface IMenuDef : IPlugin   
  26.     {   
  27.         /// <summary>   
  28.         /// 菜单中Item的数量   
  29.         /// </summary>   
  30.         int ItemCount { get; }   
  31.         /// <summary>   
  32.         /// 访问每个Item   
  33.         /// </summary>   
  34.         /// <param name="pos"></param>   
  35.         /// <param name="item"></param>   
  36.         void GetItemInfo(int pos, ItemDef item);   
  37.     }   
  38. }  

今天暂时就写到这,后续的得慢慢思考一下,如何写好,嘿嘿

原创粉丝点击