Outlook 2013 Addin:使用c#单击按钮更改功能区按钮图像

时间:2014-11-12 06:44:35

标签: outlook outlook-addin outlook-2013

我使用c#为Outlook 2013创建了功能区按钮。

我还为彩带设置了图像。

现在点击功能区按钮我想更改功能区图像。

是否可以使用c#实现此目的。?

2 个答案:

答案 0 :(得分:2)

不确定您希望它如何运作,但这可以解决问题。

bool callback {get;set}

public Bitmap GetImage(IRibbonControl control)
    {
        switch (control.Id)
        {

            case "FooButtonId":
            {
                if(callback== true){
                    callback = false;
                    return new Bitmap(Properties.Resources.someimage1);
                }else 
                    callback =true;
                    return new Bitmap(Properties.Resources.someimage2);
                }
            }
        }
    }

答案 1 :(得分:0)

这个问题是3哟,但帮助我走得更远,我想与你分享。 首先,我在VB.net中完成了这个,所以我的代码将在VB.net中。有一些在线工具可以将代码转换为C#。 其次,我使用了切换按钮而不是简单按钮。 第三,我使用OnOff作为项目设置,以保存切换按钮的状态。

步骤1:Ribbon.xml文件,用于在功能区上放置切换按钮的代码。 假设您已在文件中设置了tabgroup标记。

<toggleButton id="onoffTBTN" label="ON/OFF" showImage="true" onAction="OnOffToggle" getImage="OnOffImage"/>

步骤2:Ribbon.vb文件,用于根据切换按钮状态更改OnOff设置的代码(是否按下)并强制使自定义控件无效

Public Sub OnOffToggle(ByVal control As Office.IRibbonControl, ByVal pressed As Boolean)
    My.Settings.OnOff = pressed
    My.Settings.Save()
    myRibbon.InvalidateControl("onoffTBTN")
End Sub

步骤3:Ribbon.vb文件,读取OnOff设置并相应地更改图像。请注意,您的图片必须已添加到项目资源中,才能在My.Resources.*使用它们。我使用了支持透明像素的png文件。此功能有两种情况,一是在Outlook启动时,第二次是在按下切换按钮时,特别是命令myRibbon.InvalidateControl("onoffTBTN")

Public Function OnOffImage(ByVal control As Office.IRibbonControl) As Drawing.Bitmap
    Dim onoff As Boolean = My.Settings.OnOff
    Select Case control.Id
        Case "onoffTBTN"
            If onoff = True Then
                Return New Drawing.Bitmap(My.Resources._on)
            Else
                Return New Drawing.Bitmap(My.Resources.off)
            End If
    End Select
End Function

唯一奇怪的行为是将OnOff设置设置为TRUE。显示正确的图像,但切换按钮看起来没有按下。您必须单击两次才能将OnOff设置为False。