我有一个VSTO为Word与2个丝带。其中一个是在设计器中构建的,我可以使用以下命令从代码访问它们的属性
Me.myButton1.label = "My Button Label";
但是另一个是动态的,并且加载了
GetResourceText("filename.xml");
其中XML的格式如下
<?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是未知的。如何在代码中访问组或按钮标签?
发布于 2018-08-16 09:04:50
我想这就是你要找的。我修改了XML,并在C#、VB.NET和VBA中包含了getLabel
的回调函数。
在我的插件中,我将关于信息作为一个组放在最右边的功能区中。这是我的,我在这里从项目设置中加载关于信息。此外,我使用来记录我部署的VSTO插件中的所有错误。您可以将日志文件写入网络上的共享文件夹;我通常只将其放在单击一次部署路径的安装文件夹下。在日志文件中,您可以捕获版本、计算机名称、用户名等。
下面是一个使用XML (使用Notepad++ XML Tools plugin格式化)的示例。
<?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#回调
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回调
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回调
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
https://stackoverflow.com/questions/51823088
复制相似问题