不能在C#版本中使用Interop.Word设置书签范围

问题描述:

我正在将vb.net套件的帮助器转换为c#。下面的代码片段工作正常,在VB.Net不能在C#版本中使用Interop.Word设置书签范围

para2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range) 

其中PARA2是oftype Word.Paragraph

转换后的C#代码设置书签的范围,我在许多文章看到的是

var bookmarkRange= oDoc.Bookmarks.get_Item((object)"\\endofdoc").Range; 
var para2 = oDoc.Content.Paragraphs.Add(bookmarkRange); 

ReSharper说这需要使用一个索引属性,当它改变时将其转换为

var bookmarkRange = oDoc.Bookmarks.Item[(object)"\\endofdoc"].Range; 

既不版本建立,该错误是

错误1“Microsoft.Office.Interop.Word.Bookmarks”不包含关于“项”和没有扩展方法“项”接受型的第一参数'的定义Microsoft.Office.Interop.Word.Bookmarks'可以找到(是否缺少using指令或程序集引用?)F:\ BATLGroup \ AzureStorageContainer \ AzureStorageContainer \ AzureStorageContainer \ AzureHelpers \ OfficeAppHelpers.cs 19 44 AzureStorageContainer

我参考

大会的Microsoft.Office.Interop.Word C:\ Program Files文件(x86)的\微软的Visual Studio 14.0 \ Visual Studio工具用于Office \ PIA \ Office15 \ Microsoft.Office.Interop.Word.dll

任何帮助赞赏。

附加题:

do 
     { 
      bookmarkRange.ParagraphFormat.SpaceAfter = 6; 
      bookmarkRange.InsertAfter("A line of text"); 
      bookmarkRange.InsertParagraphAfter(); 
     } while (pos >= bookmarkRange.Information[WdInformation.wdVerticalPositionRelativeToPage]); 

本节犯错误的bookmarkRange.Information。它说你不能比较一个int和一个对象。 wdVertical ....应该返回一个数字,表示距离页面顶部的距离。

的C#相当于oDoc.Bookmarks.Item("\endofdoc").Range是:

oDoc.Bookmarks["\\endofdoc"].Range 

...这是因为没有按照this link C#不落实Item属性如VB:

[。 ..] C#语言使用关键字来定义索引器,而不是使用Item属性的 。 Visual Basic实现Item作为默认属性 ,该属性提供了相同的索引功能。

更新

线bookmarkRange.Information[WdInformation.wdVerticalPositionRelativeToPage]实际上返回一个浮点数,所以你需要投它来比较它,如:

pos >= (float)bookmarkRange.Information[WdInformation.wdVerticalPositionRelativeToPage]); 

这是假设POS是的类型可以浮动。

+0

哇,我试过的每一个可能的迭代,包括括号中的众多,我很愚蠢我错过了那一个。我还有一个问题。如果您愿意,请参阅后期更新。 – dinotom

+0

它发生在我们最好的;-)答案更新。 – DanL

+0

在C#中\必须被转义,所以它是“\\ endofdoc” – dinotom