如何将按钮添加到功能区(C#)上预先存在的选项卡?
我已成功创建了一个新选项卡,并将其放在现有选项卡的旁边。然后我意识到我只有一个按钮,所以(现在)把它放在主页标签上更有意义。但这并没有真正起作用 我试着跟着导游走。我得到了一个XML,并将其XML更改为以下内容如何将按钮添加到功能区(C#)上预先存在的选项卡?,c#,ribbon,outlook-addin,outlook-2010,C#,Ribbon,Outlook Addin,Outlook 2010,我已成功创建了一个新选项卡,并将其放在现有选项卡的旁边。然后我意识到我只有一个按钮,所以(现在)把它放在主页标签上更有意义。但这并没有真正起作用 我试着跟着导游走。我得到了一个XML,并将其XML更改为以下内容 <tabs> <!--<tab idMso="TabAddIns">--> <tab idMso="TabHome"> <group id="group1" label="Hazaa!"> <b
<tabs>
<!--<tab idMso="TabAddIns">-->
<tab idMso="TabHome">
<group id="group1" label="Hazaa!">
<box id="box1" />
</group>
</tab>
</tabs>
当我运行项目时,UI没有变化,因此我猜:
TabHome
错误(至少对于Outlook 2010而言)idMso
错误(至少对于Outlook 2010而言)或我能做些什么来改变色带?(Outlook 2010/VSTO/VS 2010/.NET 4)。属性
idMso
正确,但所需选项卡的id为TabMail
。您可以在MSDN上找到。然后,如问题的注释中所述,示例XML可能缺少customUI和ribbon标记。(免责声明:我没有在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>
已编辑。抱歉,提供了dnn链接。你想要办公室,你想要c 下面是VBA中的StackOverflow答案。。。 用C#翻译成
[Lib "oleacc.dll"]
Long AccessibleChildren(object paccContainer,
long iChildStart,
long cChildren,
object rgvarChildren,
long pcObtained)...
我从未试过,所以不确定它是否有效
从所有其他文档中,您似乎只需获取ribbon对象,并在其中迭代(使用foreach)所有子对象,如果您只想在Visual Studio中的现有ribbon中显示按钮,请单击此处
在您的情况下,将OfficeId更改为TabMail对于其他答案似乎都不起作用而感到沮丧的人,请转到功能区本身的属性,并将
RibbonType
设置为Microsoft.Outlook.Explorer
(或您希望在其中看到控件的任何上下文)。这是一个很容易被忽视的关键步骤
然后按照其他说明将OfficeId
设置为TabMail
此外,可以在此处找到Office 2016 Fluent控件标识符:以上是完整的XML吗?rootnode应该有一个
标记,里面应该有一个
标记,不是吗?否则,我认为Outlook将忽略您的XML代码。换句话说,备选方案1。是的,我也有。只是不想发布大量的文本。我的假设是名称指向错误的选项卡(或者根本没有)。正如我对你精彩的回答所作的评论,这个假设被证明是正确的,就是这样。我可以补充一句,这很有道理。供将来参考-如何列出Outlook/Word/任何其他ribbonized软件中当前安装/可见/可用的所有选项卡的所有名称?我在某个地方看到了一个提示,我可以去QAT并在工具提示中检查它们,但这只适用于选项卡中的组件。选项卡本身没有显示工具提示…我想msdn上的某个地方有它的参考,但我现在找不到它…顺便说一句,你可以通过单击答案旁边的复选标记将问题标记为已回答,如果你愿意,可以向上投一票。是的,我希望如此。我只是想查找一些额外的信息,以便下一个遇到这个问题的可怜的灵魂不必再问后续问题。我试图在谷歌上搜索一些常用的标签名称,但这并没有给我任何列表链接。有人建议我下载一个包含所有名称的文件,但它是一个EXE,我看不出将文本文件作为可执行文件分发有什么意义,所以我假设这个提示是错误的或被误解的,直到有人告诉我不是这样。也许可以帮你提供第三方选项卡的ID?如果你能让它工作,请在这里留下评论。。。
[Lib "oleacc.dll"]
Long AccessibleChildren(object paccContainer,
long iChildStart,
long cChildren,
object rgvarChildren,
long pcObtained)...