首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用GetResourceText加载Office功能区对象(按钮/组)时对其进行访问

使用GetResourceText加载Office功能区对象(按钮/组)时对其进行访问
EN

Stack Overflow用户
提问于 2018-08-13 21:04:53
回答 1查看 666关注 0票数 0

我有一个VSTO为Word与2个丝带。其中一个是在设计器中构建的,我可以使用以下命令从代码访问它们的属性

代码语言:javascript
复制
Me.myButton1.label = "My Button Label"; 

但是另一个是动态的,并且加载了

代码语言:javascript
复制
GetResourceText("filename.xml");

其中XML的格式如下

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
      <ribbon>
        <tabs>
          <tab idMso="TabAddIns" label="My Tab">
            <group id="grpProperties" label="Properties">
              <button id="btnProps" imageMso="PropertySheet" onAction="btnMainForm" label="Change properties" size="large" />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>

它工作正常,并且两个功能区都显示在Word中。此xml文件包含带有ID的组和按钮。但是我不能访问它们的属性,因为它们的对象I是未知的。如何在代码中访问组或按钮标签?

EN

回答 1

Stack Overflow用户

发布于 2018-08-16 09:04:50

我想这就是你要找的。我修改了XML,并在C#、VB.NET和VBA中包含了getLabel的回调函数。

在我的插件中,我将关于信息作为一个组放在最右边的功能区中。这是我的,我在这里从项目设置中加载关于信息。此外,我使用来记录我部署的VSTO插件中的所有错误。您可以将日志文件写入网络上的共享文件夹;我通常只将其放在单击一次部署路径的安装文件夹下。在日志文件中,您可以捕获版本、计算机名称、用户名等。

下面是一个使用XML (使用Notepad++ XML Tools plugin格式化)的示例。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
    <ribbon>
        <tabs>
            <tab 
                    idMso="TabAddIns" 
                    label="My Tab"
                    >
                <group 
                        id="grpProperties" 
                        getLabel="GetLabelText"
                        >
                    <button 
                            id="btnProps" 
                            imageMso="PropertySheet" 
                            onAction="btnMainForm" 
                            label="Change properties"
                            size="large" 
                            />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

标签文本的C#回调

代码语言:javascript
复制
public string GetLabelText(Office.IRibbonControl control)
{
    try
    {
        switch (control.Id)
        {
            case "grpProperties":
                return "My Addin 1.0";
            default:
                return string.Empty;
        }
    }
    catch (Exception)
    {
        return "error";
    }
}

标签文本的VB.NET回调

代码语言:javascript
复制
Public Function GetLabelText(control As Office.IRibbonControl) As String
    Try
        Select Case control.Id
            Case Is = "grpProperties"
                Return "My Addin 1.0"
            Case Else
                Return String.Empty
        End Select

    Catch ex As Exception
        Return "error"

    End Try

End Function

标签文本的VBA回调

代码语言:javascript
复制
Public Sub GetLabelText(control As IRibbonControl, ByRef label)
On Error GoTo ErrTrap

    Select Case control.id
        Case Is = "grpProperties"
            label = "My Addin 1.0"
        Case Else
            label = ""
    End Select

ExitProcedure:
    Exit Sub

ErrTrap:
    label = "error"
    Resume ExitProcedure

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

https://stackoverflow.com/questions/51823088

复制
相关文章

相似问题

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