我使用 c# 为 Outlook 2013 创建了功能区按钮。
我还为功能区设置了图像。
现在单击功能区按钮,我想更改功能区图像。
是否可以使用 c#. 来实现这一点?
我使用 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);
}
}
}
}
这个问题是 3 岁,但帮助我走得更远,我想与你分享。首先,我在 VB.net 中完成了这项工作,因此我的代码将在 VB.net 中。有一些在线工具可以将代码转换为 C#。其次,我使用了切换按钮而不是简单按钮。第三,我用作OnOff
项目设置以保存切换按钮的状态。
第 1 步:Ribbon.xml 文件,将切换按钮放置在功能区上的代码。假设您已经在文件中设置了tab
andgroup
标记。
<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。