从.NET程序集访问同名的COM实体

时间:2010-01-05 08:42:27

标签: c# vba interop ms-office powerpoint

我再次遇到一个小问题(我希望),我不知道如何获取PowerPoint提供的一些演示文稿属性(但我甚至不知道如何谷歌搜索或搜索它来自C#的site :()。让我解释。我们可以分别通过互操作程序集和ms-office内置的VBA编辑器访问C#和VBA中的TextRange属性。没关系,但是这个属性包含两个同名实体 - Runs。VBA允许以方法和属性的形式访问它(此外,Runs属性对象内部很有用),但属性Runs无法访问通过interop程序集,Runs()方法只能被访问(它返回文本运行对象)。我已经使用.NET Reflector挖掘了互操作程序集,但我没有找到任何与Runs相关的内容property(虽然具有不同唯一而不是方法名称的属性具有自己的get_Property()set_Property()方法)。似乎interop程序集缺少Runs接口的TextRange属性。坦率地说,我不确定。: (

我可以以某种方式从C#获取访问Runs属性吗?我不熟悉COM等,我希望得到你的帮助。感谢。

2 个答案:

答案 0 :(得分:1)

我认为您在谈论Microsoft.Office.Core.TextRange2.Runs()属性。它是一个带有两个参数的属性,start和length。这样的属性不能用C#语言直接访问,至少不能until C# 4.0。现在只有Visual Basic支持索引属性。

解决方法是使用get_Runs()代替。

答案 1 :(得分:0)

在C#中,您必须指定从哪里开始和结束:

...

foreach(txtrng.Runs(0,txtrng.Length)中的TextRange txtrn) {

if(txtrn.Font.Name ==“Arial”)     MessageBox.Show(txtrn.Text);

}

.....