C#VSTO合并文档级功能区和应用级功能区

时间:2015-03-24 06:44:11

标签: c# excel vsto ribbon

我在Excel中创建了一个包含功能区的文档级自定义,我想为Excel创建一个涉及同名功能区的应用程序级自定义。我的问题是如何让两个色带结合起来?目前,它们具有相同的自定义ControlId。

Ribbon

1 个答案:

答案 0 :(得分:0)

控件的idQ属性的存在是为了使多个加载项能够共享容器,例如自定义选项卡和组。

在以下VBA示例中,两个Excel加载项在加载项选项卡上共享相同的“Contoso”组;每个都添加一个按钮。关键是在标记中指定相同的唯一命名空间。然后,控件可以使用idQ引用此命名空间。

  

CustomUI for add-in 1

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" 
xmlns:x="myNameSpace" >
  <ribbon>
    <tabs>
      <tab idMso="TabAddIns">
        <group idQ="x:Contoso" label="Contoso">
          <button id="C1" label="Contoso Button 1" size="large" 
            imageMso="FileSave" onAction="c_action1" />
        </group>
     </tab>
   </tabs>
 </ribbon>
</customUI>
  

用于加载项2的CustomUI

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" 
 xmlns:x="myNameSpace" >
   <ribbon>
     <tabs>
       <tab idMso="TabAddIns">
          <group idQ="x:Contoso" label="Contoso">
             <button id="C2" label="Contoso Button 2" size="large" 
               imageMso="FileSave" onAction="c_action2" />
          </group>
       </tab>
     </tabs>
   </ribbon>
 </customUI>

如果使用COM加载项自定义Fluent UI,则命名空间名称必须是COM加载项的ProgID,但行为在其他方面相同。使用共享加载项时,ProgID为AddInName.Connect。当您使用Microsoft Visual Studio 2005 Tools for 2007 Microsoft Office System(Visual Studio 2005 Tools for Office Second Edition)创建加载项时,ProgID是加载项的名称。

您可以在MSDN的以下系列文章中阅读有关Fluent UI(又名Ribbon UI)的更多信息:

  1. Customizing the 2007 Office Fluent Ribbon for Developers (Part 1 of 3)
  2. Customizing the 2007 Office Fluent Ribbon for Developers (Part 2 of 3)
  3. Customizing the 2007 Office Fluent Ribbon for Developers (Part 3 of 3)