在Outlook Backstage上获取复选框状态?

时间:2011-06-27 21:15:35

标签: c# xml outlook-addin

使用Outlook 2010:如果我在XML中为后台加载了一个复选框,那么如何查询该元素并使用C#获取其状态?以下是后台XML的示例:

<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="Ribbon_Load"
          xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <backstage>
    <tab id="MyBackstageTab"
         getVisible="MyBackstageTab_GetVisible">
      <firstColumn>
        <group id="RegularGroup">
          <bottomItems>
            <groupBox id="GeneralGroupBox">

              <!-- This works fine; onAction is called every click. -->
              <button id="ApplyButton"
                      label="Apply"
                      onAction="ButtonAction"/>

              <!-- Neither onAction or getPressed functions are called
                   when interacting with the checkbox on the form. -->
              <checkBox id="AddInEnabled"
                        label="Enable AddIn"
                        onAction="CheckBoxAction"
                        getPressed="CheckBoxPressed"/>

            </groupBox>
          </bottomItems>
        </group>
      </firstColumn>
    </tab>
  </backstage>
</customUI>

...这里是MyRibbon.cs

namespace MyAddIn {

    [ComVisible(true)]
    public class MyRibbon : Office.IRibbonExtensibility {

        // constructors, etc...

        public void ButtonAction(Office.IRibbonControl control) {
            System.Windows.Forms.MessageBox.Show(
                "ButtonAction: " + control.Id);
        }

        // Never gets called.
        public void CheckBoxAction(Office.IRibbonControl control) {
            System.Windows.Forms.MessageBox.Show(
                "CheckBoxAction: " + control.Id);
        }

        // Never gets called.
        public void CheckBoxPressed(Office.IRibbonControl control) {
            System.Windows.Forms.MessageBox.Show(
                "CheckBoxPressed: " + control.Id);
        }

    }
}

我的想法是在MyRibbon类中记录每个元素的状态,因为当用户与表单交互时会触发事件。但是,由于某些内容(例如上面示例中的checkbox)似乎没有触发任何可用的事件,我需要一些其他方法来查询此类中的后台。

所以,如果我有一个 Apply 按钮,它会在某处保存表单状态(代表AddIn设置):我可以对点击的按钮做出反应,但我怎样才能得到{{1}那时的状态?

1 个答案:

答案 0 :(得分:0)

检查此答案:How to access backstage checkbox value in an Office addin?

ps:我写完后发现了你的问题:)