0

我正在使用 Ribbon XML 和 VS 2010 为 Outlook 2010 构建一些自定义按钮控件,但在刷新按钮状态时遇到了一些问题。

我为 idMso="TabReadMessage" (阅读电子邮件窗口/检查器)创建了 2 个按钮。

按钮的功能区 XML 代码:

<tab idMso="TabReadMessage">
  <group id="MyGroup" label="My Label">
     <splitButton id="MySplitButton" keytip="QS" size="large">
          <button id="SplitButton1" onAction="SplitButton1_Click" label="SplitButton 1" />
          <menu id="SplitButton_mnu" keytip="QS">
                <button id="Button1" onAction="Button1_Click" label="Button 1" />
                <button id="Button2" onAction="Button2_Click" label="Button 2"/>
          </menu>
     </splitButton>
     <toggleButton id="MyToggleButton" onAction="MyToggleButton_Click" size="large" label="Toggle Button" getEnabled="GetEnabledToggleButton" />
  </group>
</tab>

拆分按钮点​​击回调:

Public Sub SplitButton1_Click(ByVal control As IRibbonControl)
   ribbon.InvalidateControl("MyToggleButton")
End Sub

切换按钮 getEnabled 回调事件:

Public Function GetEnabledToggleButton(ByVal control As IRibbonControl) As Boolean
   Return False
End Function

我想要实现的是,在我单击 SplitButton 后,ToggleButton 将被禁用,我正在使用ribbon.InvalidateControl("MyToggleButton") 使控件无效,这应该触发 ToggleButton 的 getEnabled 回调事件,但它没有不。但是,如果我在检查器窗口之外单击并再次单击检查器窗口,则状态将更改并起作用。我以为 InvalidateControl() 会立即改变控件的状态?

请帮忙,谢谢。

4

1 回答 1

0

我在 Addin 类中创建了一个子例程,在这个子例程中我使 MyToggleButton 控件无效。

SplitButton1_Click() 事件将调用子例程,因此将使 MyToggleButton 控件无效,此工作,但不确定是否有更好/推荐的方法来执行此操作。

于 2012-10-25T01:29:58.963 回答