I have a custom feed with a few checkboxes in the menu:
<?xml version="1.0" encoding="UTF-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load"> <ribbon> <tabs> <tab id="ribbon" label="Ribbon"> <group id="ribbonGroup" label="Group"> <menu id="menu" label="Menu"> <checkBox id="checkbox1" label="Checkbox 1" visible="true" onAction="OnCheckboxChanged"/> <checkBox id="checkbox2" label="Checkbox 2" visible="true" onAction="OnCheckboxChanged"/> <checkBox id="checkbox2" label="Checkbox 2" visible="true" onAction="OnCheckboxChanged"/> </group> </tab> </tabs> </ribbon> </customUI>
This is the corresponding C # code:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using System.Drawing; using System.Windows.Forms; using Office = Microsoft.Office.Core; using Excel = Microsoft.Office.Interop.Excel; using Microsoft.Office.Tools.Excel; namespace ExcelAddIn1 { [ComVisible(true)] public class SSRRibbon : Office.IRibbonExtensibility { private Office.IRibbonUI ribbon; public SSRRibbon() { } #region IRibbonExtensibility-Member public string GetCustomUI(string ribbonID) { return GetResourceText("ExcelAddIn1.SSRRibbon.xml"); } #endregion #region ribbon callback functions public void Ribbon_Load(Office.IRibbonUI ribbonUI) { this.ribbon = ribbonUI; } public void OnCheckboxChanged(Office.IRibbonControl control) { int i = 1; } #endregion #region auxiliary 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 } }
However, OnCheckboxChanged never called. It works great when I use this callback function with buttons, but not with checkboxes, either in the menu or directly in the feed group. It also works with getPressed instead of onAction .
source share