首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSTO 4/XML:如何使某些控件可选可见

VSTO 4/XML:如何使某些控件可选可见
EN

Stack Overflow用户
提问于 2018-08-30 07:21:18
回答 1查看 235关注 0票数 0

我有一个由VSTO-4和VS2017制作的XML,可以在Outlook-2016中运行。我使用的不是Visual Studio提供的设计器,而是整个“流畅”模式(XML)。

这个功能区如果是用按钮实现的,我的客户在同一个功能区中有这么多按钮/选项时“有点”迷失了……它们中的大多数实际上只是我的程序的“选项”。

我想使这个Ribbon (现在命名为Ribbon-1)只有3个按钮,其中一个是"OPTIONS“命令按钮,以调用Ribbon-2,这个按钮填充了Ribbon-1中的所有其他按钮。

显然,Ribbon-2将出现在Ribbon-1的相同选项卡上(至少“显示在同一个TAB中”),一旦用户设置了一个选项,他点击"BACK“按钮,Ribbon-2消失,Ribbon-1再次出现...

我们可以在一些AddIns中看到这种行为,我也想做同样的事情。

有什么建议吗?我很感谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 13:58:50

与其使用多个功能区,不如将所有控件放在一个功能区中。使用getVisible属性可以设置所有按钮和组的可见性,这些按钮和组应选择性地隐藏或可见。使用toggleButton显示/隐藏这些按钮。

toggleButtononAction回调可以设置getVisible回调可以检查的类级变量。然后,该过程使功能区无效,以便触发getVisible回调。它们依次检查类级别变量以确定每个按钮的可见性状态。

请注意,当功能区加载时,也会执行get回调。

Ribbon XML示例:

代码语言:javascript
复制
<group id="MyGroup" label="TEST empty" visible="true">
  <button id="testButton" label="test empty" visible="true"/>
  <toggleButton id="testToggle" label="toggle optional buttons" visible="true" onAction="toggleVisibleControls"/>
  <button id="optionalButton" label ="optional" getVisible="isVisible" />
</group>
<group id="Optional" label="Optional group" getVisible="isVisible"></group>

VSTO Ribbon XML的示例VB.NET代码:

代码语言:javascript
复制
'Generated by VSTO
<Runtime.InteropServices.ComVisible(True)> _
    Public Class Ribbon1
    Implements Office.IRibbonExtensibility

    Private ribbon As Office.IRibbonUI
    Private ShowHide As Boolean = False

    Public Sub New()
    End Sub

    Public Function GetCustomUI(ByVal ribbonID As String) As String Implements Office.IRibbonExtensibility.GetCustomUI
        Return GetResourceText("VB2010addin_RibbonXML.Ribbon1.xml")
    End Function

#Region "Ribbon Callbacks"
    'Create callback methods here. For more information about adding callback methods, select the Ribbon XML item in Solution Explorer and then press F1.
    Public Sub Ribbon_Load(ByVal ribbonUI As Office.IRibbonUI)
        Me.ribbon = ribbonUI
     End Sub

    Public Function isVisible(ByVal control As Office.IRibbonControl) As Boolean
        Return Me.ShowHide
    End Function

    Public Sub toggleVisibleControls(ByVal control As Office.IRibbonControl, pressed As Boolean)
        ShowHide = pressed
        ribbon.Invalidate()
    End Sub

#End Region
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52087308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档