如何使用功能区xml将图像添加到按钮?

时间:2014-02-04 04:35:47

标签: c# .net vsto ribbon

如何将自定义图像添加到选项卡和上下文菜单中的功能区按钮。

我尝试了将图像添加到功能区按钮但没有运气:-(。我正在设计Excel的插件。我在标题中添加了这个。

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"  onLoad="Ribbon_Load"   loadImage="Ribbon_LoadImage"> 
    <button id="btn2d" keytip="L" screentip="2D Visualization" supertip="2D Part Visualization" label="2D" size="large"/>
    <contextMenu idMso="ContextMenuCell">
    <button id="btn1" label="my label"/>
    </customUI>

代码段

public Bitmap Ribbon_LoadImage(IRibbonControl control)
    {
        switch (control.Id)
        {
            case "btn2": return new Bitmap(Properties.Resources.btn1);
            case "btn3": return new Bitmap(Properties.Resources.btn2);
            case "btn4": return new Bitmap(Properties.Resources.btn3);
            case "btn5": return new Bitmap(Properties.Resources.Filter);
            case "btnOpt6": return new Bitmap(Properties.Resources.Settings);
            case "btnInform7": return new Bitmap(Properties.Resources.Vis);
            case "btnHelpPage": return new Bitmap(Properties.Resources.Help);
        }
        return null;
    }

请帮帮我。 我正在使用.net 4.0 c#VSTO excel addin for Office 2010。

4 个答案:

答案 0 :(得分:27)

您必须为每个按钮使用getImage属性,并且回调应返回位图。

在Ribbon.xml中

<button id="btnLogo" getImage="imageSuper_GetImage" size="large" />

Ribbon.cs

public Bitmap imageSuper_GetImage(IRibbonControl control)
        {
            return Resources.super_logo;
        }

答案 1 :(得分:0)

您必须为每个按钮使用getImage属性,并且回调应返回位图。

在Ribbon.xml中

<button id="btnLogo" getImage="imageSuper_GetImage" size="large" />

Ribbon.cs

public Bitmap imageSuper_GetImage(IRibbonControl control)
        {
            return Properties.Resources.super_logo;
        }

答案 2 :(得分:0)

您可以从LoadImage Function获取图像。

您需要编写以下内容:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" 
  loadImage="GetImage">

public stdole.IPictureDisp GetImage(string imageName){
  return
    PictureConverter.IconToPictureDisp(Properties.Resources.MyIcon);
}

答案 3 :(得分:0)

这是一篇旧帖子,但我想我会添加我的答案,以防有人仍在寻找示例(就像我一样)...

在 Ribbon.xml 中,loadImage="GetImage" 引用了 Ribbon.cs 中的回调,该回调将从资源中获取图像。在下面的示例中,我使用 image="Report_256x" 来触发回调。

<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2009/07/customui" loadImage="GetImage">
    <ribbon>
        <tabs>
            <tab idMso="TabMail">
                <group id="group1" label="Priority Tracker">
                    <button id="btnWIPReport" onAction="btnWIPReport_Click" label="WIP Report" size="large" image="Report_256x"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

我在示例中使用的回调看起来像这样...

public System.Drawing.Image GetImage(string ImageName)
{
    return (System.Drawing.Image)Properties.Resources.ResourceManager.GetObject(ImageName);
}