如何在功能区(C#)上的预先存在的选项卡中添加按钮?

时间:2012-09-19 06:54:18

标签: c# ribbon outlook-addin outlook-2010

我已成功创建了一个新标签,并将其放在预先存在的标签旁边。然后我意识到我只有一个按钮,所以将它放在Home选项卡上更有意义(现在)。虽然没有真正开始工作。

我试图遵循指南和走路。我给了我一个XML并将其XML更改为以下内容。

<tabs>
  <!--<tab idMso="TabAddIns">-->
  <tab idMso="TabHome">
    <group id="group1" label="Hazaa!">
      <box id="box1" />
    </group>
  </tab>
</tabs>

当我运行项目时,我没有对UI进行任何更改,所以我猜:

  1. 根本不读取XML,
  2. 名称TabHome错误(至少对于Outlook 2010),
  3. 属性idMso错误(至少对于Outlook 2010)或
  4. 其他/上述任何组合。
  5. 如何更改功能区? (Outlook 2010 / VSTO / VS 2010 / .NET 4)。

4 个答案:

答案 0 :(得分:20)

属性idMso是正确的,但您想要的标签的ID是TabMail。您可以在MSDN上找到packed set of Excel-files containing lists of Office 2010 control IDs。然后,如对问题的评论中所述,您的示例XML可能缺少customUI和ribbon-tags。 (免责声明:我没有在Outlook中自定义功能区,只有Word,Excel和PowerPoint,但我猜它们的工作原理相同?)

尝试类似这样的事情:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>
        <tabs>
            <tab idMso="TabMail">
                <group id="group1" label="Hazaa!">
                    <box id="box1" />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

答案 1 :(得分:2)

如果您只想在现有功能区中显示按钮,请在Visual Studio中https://msdn.microsoft.com/en-us/library/bb608628.aspx#Anchor_2

在您的情况下,将 OfficeId 更改为 TabMail

答案 2 :(得分:0)

编辑。对不起,给了一个dnn链接。你想要办公室,你想要c#。

这是VBA中的StackOverflow答案...... How to get Ribbon custom Tabs IDs?

AccessibleChildren _
            Lib "oleacc.dll" _
                (ByVal paccContainer As Object, _
                 ByVal iChildStart As Long, _
                 ByVal cChildren As Long, _
                       rgvarChildren As Variant, _
                       pcObtained As Long) _
            As Long

在C#中转换为

[Lib "oleacc.dll"]
Long AccessibleChildren(object paccContainer, 
                        long iChildStart, 
                        long cChildren, 
                        object rgvarChildren, 
                        long pcObtained)...

我从未尝试过,所以不确定它是否有效。

从所有其他文档中,您似乎只是获取了功能区对象,并在其中迭代(使用foreach)通过所有子项

答案 3 :(得分:0)

对于感到沮丧的其他答案似乎都不起作用的人们,请转到功能区本身的属性,并将RibbonType设置为Microsoft.Outlook.Explorer(或您要查看的任意上下文)控件)。这是很容易忽略的关键步骤。

然后按照其他说明将OfficeId设置为TabMail

此外,可以在以下位置找到Office 2016 Fluent Control标识符:https://www.microsoft.com/en-us/download/confirmation.aspx?id=50745