您现在的位置是: 首页 > InkFx 技术 > Laura.SqlForever 2013

『练手』004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件
ShuXiaolong 2016-11-28 613人围观
暂无评论
简介 004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件 导航栏 插件扩展比如下图的 窗口 > 关闭所有文档 这个导航栏; 在 任何程序集,任何命名空间,任何类名 扩展类似插件: 代码详解:特性标签:

     004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件

     

    导航栏 插件扩展

    比如下图的    窗口 > 关闭所有文档    这个导航栏;

     

    在 任何程序集,任何命名空间,任何类名 扩展类似插件:




     

    代码详解:

    特性标签:      Key             唯一键值(同名键值 会以 Important 权重,相互覆盖)

                         ParentKey   父级键值

                         GroupKey    在导航栏中,某些 选项按钮 存在分组,这个值 就是 分组用的

                         Order         排序值(降序)

                         TriggerType 触发窗体类型(即 这个 选项是 为 哪一类 窗体服务的——支持基类)

                         BarItemType       是 导航栏 还是 工具栏

     

    判断启用函数:Must   CanUse 这两个 函数基本算是 历史遗留 —— 但不是错误,且依然有效!

                         >Must 是 当前扩展 启用底限 —— 只有满足 Must 条件,才能启用;

                         >CanUse 是 当前扩展 启用状态 —— 比方说,对应窗体改变,而 影响 当前扩展 启用状态;

                         >上面的代码 Must 函数中,判断 当前扩展 只为 MainForm 服务;

                         >但是 特性标签 中 TriggerType 已经写明:触发类型 为 MainForm —— 即 判断重复

                         >这个 判断重复 是 Laura.XtraFramework 升级时留下的,作者很懒。

     

    触发事件委托:BarItemHandler 实现了 当前扩展 在界面上 被 单击时 的触发事件;

                         >导航栏、工具栏 更多的是 按钮型选项

                         >如果 你的 当前扩展 在 导航栏、工具栏 不是一个 按钮 —— 而是一个 下拉列表 等 特殊模式呢?

                         >BarItemInfoBase 基类 已经预留了函数,这里只简单介绍,具体实现 各位有兴趣就阅读源码咯:

                                >改写 SelfHandler 属性直接 返回 true —— 当前扩展 自己处理事件不麻烦 架构参与);

                                >改写 GetUI 函数,这个函数 默认返回 按钮类型 —— 你可以自定义 返回 下拉列表类型;

                                >Ps. GetUI 函数,支持 当前选项的 子级控制 —— GetUI 是 完全自由 的

     

     

    工具栏 插件扩展

    比如下图的    脚本执行窗体 > 链接数据库引擎    这个 工具栏按钮;

    在 任何程序集,任何命名空间,任何类名 扩展类似插件:

     

     

    右键菜单 插件扩展

    我们这里 以 树形导航 中的 节点的 右键举例

    在 任何程序集,任何命名空间,任何类名 扩展类似插件:

    代码详解

    >特性 + 基类:                    这个 和上面 主要 思想是类似的;但是没有 TriggerType

    >Must + CanUse 函数:              控制 当前扩展 的启用状态;

    >MenuStripHandler 委托:   右键菜单 的 触发事件;

    >历史遗留:

    >基类 MenuStripItemBase,特性 MenuStripAttribute

    在 Laura.WinFramework 中  导航栏 、 右键菜单 都可以使用;

    但在 Luara.Windows.XtraForms 中仅 右键菜单 可以使用(现在的 导航栏扩展 上面已经介绍);

    这种历史 遗留,完全是 底层布局控件库 的不同而导致,确也无奈;

     

     

    历史遗留的 工具栏扩展

    上面已经介绍:

    >Laura.WinFramework      导航栏+右键菜单(MenuStripItemBase)          工具栏(ToolStripItemBase

    >Laura.XtraFramework     导航栏+工具栏(BarItemInfoBase            右键菜单(历史MenuStripItemBase

                                              特殊工具栏(历史 ToolStripItemBase

    为什么 还要保留 历史工具栏扩展:

           >看图说话:

           

           >红色区域 里面的是 最新的 BarItemInfoBase 扩展的工具栏;

           >蓝色区域 里面的是 历史的 ToolStripItemBase 扩展的工具栏;

           > DevExpress 控件库 扩展工具栏  需要引用 太多组件 —— 用到 蓝色区域 反而显得庞大,不够简洁;

           >历史 的 工具栏扩展方式 反而在这里 显得简单 —— 于是 最后还是将 历史的工具栏 予以了保留;

     

     

    最后

     Laura.SqlForever 的 升级,扩展 过程中,终究 有所剥夺,也有所增添。

    为了 Laura.XtraFramework 稳定 和 强大,一些 之前思想 终究 保留了下来。

    这些 历史遗留 我们在 《005 Laura.SqlForever历史遗留 的 架构思想缺陷.doc》中再 详细指出。

     

     

     

                                                                                                             舒小龙

                                                                                                      2014-02-13 00:12

     

第一时间获取智能手机行业新鲜资讯和商业动态,可以访问站长的微博「InkFx」, 如果需要站长陪聊也可以在微信里添加好友,搜索「Shu_Xiaolong」, 还可以通过加入QQ群:「C#实验室」,和网友一起交流技术、共同进步。

文章评论

图文推荐

InkFx博客 有部分文章来源于互联网,版权归属于原作者。本站所有转载文章言论不代表本站观点。
如是侵犯了原作者的权利,请发邮件联系站长(514286339@qq.com),站长收到后立即删除。