VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Xml.Linq; 6 using Excel = Microsoft.Office.Interop.Excel; 7 using Office = Microsoft.Office.Core; 8 using Microsoft.Office.Tools.Excel; 9 10 namespace ExcelAddInTemplate_CS11 {12     public partial class ThisAddIn13     {14         private void ThisAddIn_Startup(object sender, System.EventArgs e)15         {16             Module1.CreateCTP();17         }18 19         private void ThisAddIn_Shutdown(object sender, System.EventArgs e)20         {21             Module1.DisposeCTP();22         }23         protected override Office.IRibbonExtensibility CreateRibbonExtensibilityObject()24         {25             return new Ribbon1();26         }27         #region VSTO generated code28 29         /// <summary>30         /// Required method for Designer support - do not modify31         /// the contents of this method with the code editor.32         /// </summary>33         private void InternalStartup()34         {35             this.Startup += new System.EventHandler(ThisAddIn_Startup);36             this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);37         }38         39         #endregion40     }41     [System.Runtime.InteropServices.ComVisible(true)]42     public class Ribbon1:Microsoft.Office.Core.IRibbonExtensibility43     {44         public Office.IRibbonUI R;45         string Office.IRibbonExtensibility.GetCustomUI(string RibbonID)46         {47             string xml= @"<customUI xmlns='http://schemas.microsoft.com/office/2009/07/customui' onLoad='OnLoad'>48     <ribbon startFromScratch='false'>49         <tabs>50             <tab id='Tab1' label='RibbonXmlEditor'>51                 <group id='Group1' label='Author:ryueifu'>52                     <button id='Button1' label='CTP' imageMso='C' onAction='Button1_Click'/>53                     <button id='Button2' label='UnLoad' imageMso='U' onAction='Button2_Click'/>54                 </group>55             </tab>56         </tabs>57     </ribbon>58 </customUI>";59             return xml;60         }61         public void OnLoad(Office.IRibbonUI ribbon)62         {63             R = ribbon;64             R.ActivateTab(ControlID: "Tab1");65         }66         public void Button1_Click(Office.IRibbonControl control)67         {68             Module1.ctp.Visible = !Module1.ctp.Visible;69         }70         public void Button2_Click(Office.IRibbonControl control)71         {72             Office.COMAddIn ThisCOM = Globals.ThisAddIn.Application.COMAddIns.Item("ExcelAddInTemplate_CS");73             ThisCOM.Connect = false;74         }75 76     }77     public static class Module178     {79         public static System.Windows.Forms.UserControl uc;80         public static Microsoft.Office.Tools.CustomTaskPane ctp;81         public static void CreateCTP()82         {83             uc = new System.Windows.Forms.UserControl();84             ctp = Globals.ThisAddIn.CustomTaskPanes.Add(control: uc, title: "CTP");85             ctp.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight;86             ctp.Visible = true;87         }88         public static void DisposeCTP()89         {90             ctp.Dispose();91         }92     }93 }
(0)

相关推荐