PowerPoint 使用Ribbon Xml改写Ribbon按钮的动作
这是一个根据用户需求给出的例子,用来改写“插入表格(I) ...”按钮的动作。我们可以以此引申为在Office中所有Button或CommandButton都可以用这样的方法改变动作。
Ribbon Xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load"> <commands> <command idMso="TableInsert" onAction="TableInsert"/> </commands> </customUI>
Ribbon Class 如下:
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; using System.Windows.Forms; // TODO: Follow these steps to enable the Ribbon (XML) item: // 1: Copy the following code block into the ThisAddin, ThisWorkbook, or ThisDocument class. // protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() // { // return new Ribbon1(); // } // 2. Create callback methods in the "Ribbon Callbacks" region of this class to handle user // actions, such as clicking a button. Note: if you have exported this Ribbon from the Ribbon designer, // move your code from the event handlers to the callback methods and modify the code to work with the // Ribbon extensibility (RibbonX) programming model. // 3. Assign attributes to the control tags in the Ribbon XML file to identify the appropriate callback methods in your code. // For more information, see the Ribbon XML documentation in the Visual Studio Tools for Office Help. namespace PowerPointAddIn2 { [ComVisible(true)] public class Ribbon1 : Office.IRibbonExtensibility { private Office.IRibbonUI ribbon; public Ribbon1() { } #region IRibbonExtensibility Members public string GetCustomUI(string ribbonID) { return GetResourceText("PowerPointAddIn2.Ribbon1.xml"); } #endregion #region Ribbon Callbacks //Create callback methods here. For more information about adding callback methods, select the Ribbon XML item in Solution Explorer and then press F1 public void Ribbon_Load(Office.IRibbonUI ribbonUI) { this.ribbon = ribbonUI; } #endregion #region Helpers 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 public void TableInsert(Office.IRibbonControl Control,bool CancelDefault) { //ToDo: Insert your code here } } }
官方参考 http://msdn.microsoft.com/en-us/library/bb462633(v=office.12).aspx
欢迎访问《许阳的红泥屋》
征诛志异,三让两家王朝;功同开辟,一桮万古江南。