Alg*_*cks 10 c# vsto add-in ms-word ms-office
我正在使用Word 2007应用级加载项.到目前为止,除了将加载项的Ribbon界面转换为XML之外,我没有遇到过重大障碍.我必须使用Ribbon XML,因为我正在处理的功能只能通过这种方式完成.问题是通过切换到Ribbon XML,我无法再通过Globals.Ribbons在运行时访问该接口.此链接http://msdn.microsoft.com/en-us/library/bb772088.aspx可以很好地解释如何访问可视设计器功能区,但它完全忽略了XML功能区案例.具体来说,我需要能够访问一些视觉控件,如标签.我怎样才能做到这一点?
Jak*_*van 10
Globals.Ribbons是一个VSTO设计器功能,如果您使用RibbonXML,那么您没有此功能.设计师实际上做了什么,它将为Office创建功能区xml,然后当办公室进行回调时,VSTO将为该上下文(文档)引发适当的事件处理程序.因为您正在使用RibbonXML,所以您完全绕过VSTO Ribbon设计器支持(我更喜欢这种方式,它更快,您可以更好地控制).
使用功能区XML,您必须为您的标签注册一个onLoad回调,然后Office将通过一个IRibbonControl,它将成为标签,您可以做的事情有限.如果你想更改文本,那么你必须注册一个getText回调,然后使该功能区控件无效,这将导致重新评估getText回调.
有关实际想要实现的内容的更多信息将非常方便=)我有一种感觉,我的VSTO contrib项目也将使您的生活更轻松,因为它在使用功能区xml时为您提供了许多优秀的Ribbon Designer功能.但让我知道你想做什么,我可以给你更多的信息.
干杯,杰克
小智 6
使用 Ribbon XML 时,我尝试了此操作,但无法从 Globals.Ribbons 访问 Ribbon1 属性。简单的属性不存在。
但是,我想出了另一个解决方案,它基本上与正确的类型转换有关。
在 ThisAddIn.cs 中:
private Microsoft.Office.Core.IRibbonExtensibility ribbonObj;
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
ribbonObj = new Ribbon1(this);
return ribbonObj;
}
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
// Calling the public method TEST() in Ribbon1.cs
//MyNameSpace is the namespace used in your project ie., your project name
((MyNameSpace.Ribbon1)ribbonObj).TEST();
// Calling the public variable flag in Ribbon1.cs
((MyNameSpace.Ribbon1)ribbonObj).flag;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6317 次 |
最近记录: |