Excelfunction区下拉背景颜色

我已经创build了一个Excelfunction区,其中有一个用户切换到我们的插件的不同环境的下拉列表,有没有一种方法,我可以给下拉select的值的背景颜色,所以说现场的情况下,我可以显示生活在红色的背景下,开发与绿色背景同样

无法更改DropDown(或项目)的背景,但可以为每个项目使用不同的图像。 像这样的东西:

在这里输入图像说明

<?xml version="1.0" encoding="utf-8" ?> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad"> <ribbon> <tabs> <tab id="MyAddInTab" label="MY ADD-IN TAB"> <group id="EnvironmentGroup" label="Environment"> <dropDown id="environmentDropDown" showImage="true" showItemImage="true" getImage="OnEnvironmentGetImage" onAction="OnEnvironmentSelectionChanged" getSelectedItemID="OnEnvironmentGetSelectedItemId"> <item id="environmentDev" imageMso="ColorGreen" label="Development" /> <item id="environmentTest" imageMso="ColorYellow" label="User Testing" /> <item id="environmentProd" imageMso="ColorRed" label="Production" /> </dropDown> </group> </tab> </tabs> </ribbon> </customUI> 

不幸的是,用户从下拉菜单中select一个项目后图像不可见,所以当select改变时,必须使该function区无效,并dynamic地将新图像设置到控件上。

像这样的东西:

 [ComVisible(true)] public class MyAddInRibbon : ExcelRibbon { private IRibbonUI _thisRibbon; private string _selectedEnvironmentId = "environmentDev"; // Defaults to Dev public void OnLoad(IRibbonUI ribbon) { if (ribbon == null) { throw new ArgumentNullException(nameof(ribbon)); } _thisRibbon = ribbon; } public string OnEnvironmentGetSelectedItemId(IRibbonControl control) { return _selectedEnvironmentId; } public void OnEnvironmentSelectionChanged(IRibbonControl control, string selectedId, int selectedIndex) { _selectedEnvironmentId = selectedId; // Invalidate the drop down, so we can update the image next to the dropdown _thisRibbon.InvalidateControl("environmentDropDown"); } public string OnEnvironmentGetImage(IRibbonControl control) { // This displays the image next to the dropdown switch (_selectedEnvironmentId) { case "environmentDev": return "ColorGreen"; case "environmentTest": return "ColorYellow"; case "environmentProd": return "ColorRed"; default: throw new InvalidOperationException(); } } }