如何以编程方式禁用按钮或使用Office功能区UI从dropDown添加/删除项目

时间:2011-05-09 10:43:09

标签: c++ com vsto ms-office ribbon

我编写了一个简单的C ++ COM Office加载项,用于加载功能区XML定义并显示简单的功能区选项卡。它具有一些按钮和dropDown(组合框/下拉列表)。我可以处理按钮点击事件和组合选择更改事件,如魅力。

现在我想根据活动文档中的更改更新功能区UI,以便禁用某些按钮并从组合框中添加/删除一些项目。

我上下搜索,找不到控制方法。我错过了很明显的东西吗?如何在代码中的任何位置更改按钮启用状态?

1 个答案:

答案 0 :(得分:4)

我看到它使用Windows功能区控件完成的方式:必须在设计时在XML标记中指定额外的按钮。在运行时,您调用SetModes()以指定在功能区中显示哪些小组件集。

像这样:

  <Application.Views>
    <Ribbon>
      <Ribbon.Tabs>
        <Tab CommandName="cmdTabMain" ApplicationModes="0,1">
          <Group CommandName="cmdGroupCommon" 
                 SizeDefinition="ThreeButtons" 
                 ApplicationModes="0,1">
            <Button CommandName="cmdButtonNew" />
            <Button CommandName="cmdButtonOpen" />
            <Button CommandName="cmdButtonSave" />
          </Group>
          <Group CommandName="cmdGroupSimple" 
                 SizeDefinition="TwoButtons" 
                 ApplicationModes="0">
            <Button CommandName="cmdButtonSwitchToAdvanced" />
            <Button CommandName="cmdButtonDropA" />
          </Group>
          <Group CommandName="cmdGroupAdvanced" 
                 SizeDefinition="FourButtons" 
                 ApplicationModes="1">
            <Button CommandName="cmdButtonSwitchToSimple" />
            <Button CommandName="cmdButtonDropA" />
            <Button CommandName="cmdButtonDropB" />
            <Button CommandName="cmdButtonDropC" />
          </Group>
        </Tab>
      </Ribbon.Tabs>
    </Ribbon>
  </Application.Views>

然后(在C#中无论如何)在点击处理程序中,您执行_ribbon.SetModes(1)_ribbon.SetModes(0)

enter image description here