• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Excel-DNA项目只用1个文件实现RibbonCustomUI和CustomTaskpane定制【C#版】 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间、添加所需文件,才能实现。后来我发现可以把所有代码都写在Class1.cs这个默认文件中。

大家可以在Visual Studio中创建一个类库项目(.Net Framework),然后把默认的Class1.cs中的代码整体替换为下面我贴的这个代码。然后启动调试,就可以看到自定义功能区和任务窗格了。

 1 using System.Runtime.InteropServices;
 2 using ExcelDna.Integration;
 3 using ExcelDna.Integration.CustomUI;
 4 using Excel = Microsoft.Office.Interop.Excel;
 5 using System.Windows.Forms;
 6 namespace Excel_DNA_Template_CS
 7 {
 8     [ComVisible(true)]
 9     public class Class1 :ExcelRibbon,IExcelAddIn
10     {
11         public IRibbonUI R;
12         public override string GetCustomUI(string RibbonID)
13         {
14             string xml = @"<customUI xmlns='http://schemas.microsoft.com/office/2009/07/customui' onLoad='OnLoad'>
15     <ribbon startFromScratch='false'>
16         <tabs>
17             <tab id='Tab1' label='RibbonXmlEditor'>
18                 <group id='Group1' label='Author:ryueifu'>
19                     <button id='Button1' label='CTP' imageMso='C' onAction='Button1_Click'/>
20                     <button id='Button2' label='UnLoad' imageMso='U' onAction='Button2_Click'/>
21                 </group>
22             </tab>
23         </tabs>
24     </ribbon>
25 </customUI>";
26             return xml;
27         }
28         public void OnLoad(IRibbonUI ribbon)
29         {
30             R = ribbon;
31             R.ActivateTab(ControlID: "Tab1");
32         }
33         public void Button1_Click(IRibbonControl control)
34         {
35             Module1.ctp.Visible = !Module1.ctp.Visible;
36         }
37         public void Button2_Click(IRibbonControl control)
38         {
39             Excel.AddIn ThisAddin = (ExcelDnaUtil.Application as Excel.Application).AddIns["Excel_DNA_Template_CS"];
40             ThisAddin.Installed= false;
41         }
42         void IExcelAddIn.AutoClose()
43         {
44             Module1.DisposeCTP();
45         }
46 
47         void IExcelAddIn.AutoOpen()
48         {
49             Module1.CreateCTP();
50         }
51     }
52     public static class Module1
53     {
54         public static UserControl uc;
55         public static CustomTaskPane ctp;
56         public static void CreateCTP()
57         {
58             uc = new UserControl();
59             ctp = CustomTaskPaneFactory.CreateCustomTaskPane(userControl: uc, title: "CTP");
60             ctp.DockPosition = MsoCTPDockPosition.msoCTPDockPositionRight;
61             ctp.Visible = true;
62         }
63         public static void DisposeCTP()
64         {
65             ctp.Delete();
66             ctp = null;
67         }
68     }
69 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#SqlHelper发布时间:2022-07-13
下一篇:
C#限制Text只能输入数字发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap