using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using Office = Microsoft.Office.Core; // TODO: 按照以下步骤启用功能区(XML)项: // 1. 将以下代码块复制到 ThisAddin、ThisWorkbook 或 ThisDocument 类中。 // protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() // { // return new MainRibbon(); // } // 2. 在此类的“功能区回调”区域中创建回调方法,以处理用户 // 操作(如单击某个按钮)。注意: 如果已经从功能区设计器中导出此功能区, // 则将事件处理程序中的代码移动到回调方法并修改该代码以用于 // 功能区扩展性(RibbonX)编程模型。 // 3. 向功能区 XML 文件中的控制标记分配特性,以标识代码中的相应回调方法。 // 有关详细信息,请参见 Visual Studio Tools for Office 帮助中的功能区 XML 文档。 namespace InkCanvasForClassPPTVsto { [ComVisible(true)] public class MainRibbon : Office.IRibbonExtensibility { private Office.IRibbonUI ribbon; public MainRibbon() { } #region IRibbonExtensibility 成员 public string GetCustomUI(string ribbonID) { return GetResourceText("InkCanvasForClassPPTVsto.MainRibbon.xml"); } #endregion #region 功能区回调 //在此处创建回叫方法。有关添加回叫方法的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=271226 public void Ribbon_Load(Office.IRibbonUI ribbonUI) { this.ribbon = ribbonUI; } #endregion #region 帮助器 private static string GetResourceText(string resourceName) { Assembly asm = Assembly.GetExecutingAssembly(); string[] resourceNames = asm.GetManifestResourceNames(); for (int i = 0; i < resourceNames.Length; ++i) { if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0) { using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i]))) { if (resourceReader != null) { return resourceReader.ReadToEnd(); } } } } return null; } #endregion } }