0

リボン XML と VS 2010 を使用して Outlook 2010 用のカスタム ボタン コントロールを作成していますが、ボタンの状態の更新に問題があります。

idMso="TabReadMessage" (Reading email window/inspector) 用の 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 に答える