分享

ExcelDna,让Excel跑起来(2)!

 百鸣村 2024-04-23 发布于湖北
三、Ribbon 功能区

要实现一个Ribbon功能区,分2部分逐一说明:
1. 自定义RibbonXml的编写
2. 自定义RibbonClass类的编写

先说第一部分,RibbonXml的编写,看下图:
1. LoadImage回调,用于Ribbon区图片显示的回调,会在Ribbon类中重写;
2. button按钮中的Image标签,用于指定按钮的图片名称,不带后缀名;
3. OnAction回调,用于button按钮的点击回调;
这里主要说明一下架构方式,本例使用的是通过添加资源来实现,xml代码脱离类代码文件,好处一目了然,可以动态替换,并且编辑XML可以智能提示,做法也很简单,先新建一个RibbonResources的文件夹,将图片资源放进去了,然后再添加一个xml文件(可以新键,或导入已编辑好的xml均可);然后在项目中再添加一个资源文件,将刚刚资源文件夹内的图片资源和xml文件作为资源添加即可。完成了这些步骤,写Ribbon类时就会方便很多。


再说第二部分,RibbonClass类的编写,如下图:
1. 对于Ribbon类的编写和函数以及加载项不同,标注是[ComVisible(true)],也就是Com可见,同时继承: ExcelRibbon类
2. 第一个重写的函数GetCustomUI,用于获取第一部分资源文件中的RibbonXML内容
3. 第二个重写的函数LoadImage,用于获取第一部分资源文件中的图片内容
4. OnAction回调,这个不用多说,就是按钮点击后的执行的程序,一般我们的逻辑都在这个回调中完成。


至此一个Ribbon功能区大体就完成了,也许有人获取会问,为啥搞这么复杂,直接将xml代码都写Ribbon类里不就得了?举个例子:目前Ribbon区只有一个按钮Start,如果需要新增一个按钮Stop得话,使用这样的架构就非常得容易了,基本无须改变Ribbon类的代码,只需在Xml中指定即可,目的就是做到代码与Xml,图片这些资源分离,降低耦合,各做各的事,Ribbon类负责逻辑,Xml负责UI,简单演示如下:


好了,先写到这吧,根据2楼的经验,这次就不贴代码了,太麻烦了,上面的两部分图片在截图时考虑到不贴代码均截取完整,有兴趣的可以参考一下,至于窗体和任务窗格,其实到了这一步后就简单了,无非是新增窗体或窗格后,通过回调调用而已,还有一些比如Addin类的作用,如何嵌入第三方dll等一些小细节,看情况再说吧。。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多