Outlook 2013加载项:使用c在单击按钮时更改功能区按钮图像#

Outlook 2013加载项:使用c在单击按钮时更改功能区按钮图像#,outlook,outlook-addin,outlook-2013,Outlook,Outlook Addin,Outlook 2013,我已经使用c#为Outlook 2013创建了功能区按钮 我还为丝带设置了图像 现在单击功能区按钮,我想更改功能区图像 使用c#可以实现这一点吗?不确定您希望它如何工作,但这可以实现 bool callback {get;set} public Bitmap GetImage(IRibbonControl control) { switch (control.Id) { case "FooButtonId":

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

我还为丝带设置了图像

现在单击功能区按钮,我想更改功能区图像


使用c#可以实现这一点吗?

不确定您希望它如何工作,但这可以实现

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);
                }
            }
        }
    }

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

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

<toggleButton id="onoffTBTN" label="ON/OFF" showImage="true" onAction="OnOffToggle" getImage="OnOffImage"/>
步骤3:Ribbon.vb文件,读取
OnOff
设置并相应更改图像。请记住,图像必须已添加到项目资源中,才能在
My.resources.*
中使用它们。我使用了支持透明像素的png文件。此函数在两种情况下调用,第一种情况是Outlook启动,第二种情况是按下切换按钮,特别是使用命令
myRibbon.InvalidateControl(“onoffTBTN”)

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

Public Sub OnOffToggle(ByVal control As Office.IRibbonControl, ByVal pressed As Boolean)
    My.Settings.OnOff = pressed
    My.Settings.Save()
    myRibbon.InvalidateControl("onoffTBTN")
End Sub
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