我使用c#为Outlook 2013创建了功能区按钮。
我还为彩带设置了图像。
现在点击功能区按钮我想更改功能区图像。
是否可以使用c#实现此目的。?
答案 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文件,用于在功能区上放置切换按钮的代码。
假设您已在文件中设置了tab
和group
标记。
<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。