1

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

我还为功能区设置了图像。

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

是否可以使用 c#. 来实现这一点?

4

2 回答 2

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);
                }
            }
        }
    }
于 2014-11-14T15:09:21.557 回答
0

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

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

<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 启动时,第二次是按下切换按钮时,特别是使用 command 时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。

于 2018-02-27T11:32:42.373 回答