簡體   English   中英

無法使用Interop.Word在C#版本中設置書簽范圍

[英]cant set bookmark range in C# version using Interop.Word

我將一組vb.net助手轉換為c#。 下面的代碼片段在VB.Net中運行正常

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

其中para2是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'不包含'Item'的定義,並且找不到擴展方法'Item'接受類型為'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)\\ Microsoft Visual Studio 14.0 \\ Visual Studio Tools for 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 ....應該返回一個數字,指示距頁面頂部的距離。

oDoc.Bookmarks.Item("\\endofdoc").Range的C#等效項oDoc.Bookmarks.Item("\\endofdoc").Range為:

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

...這是因為根據此鏈接 ,C#並未像VB那樣實現Item屬性:

[...] C#語言使用關鍵字定義索引器,而不是實現Item屬性。 Visual Basic將Item實現為默認屬性,該屬性提供相同的索引功能。

更新

bookmarkRange.Information[WdInformation.wdVerticalPositionRelativeToPage]實際上返回一個浮點數,因此您需要將其bookmarkRange.Information[WdInformation.wdVerticalPositionRelativeToPage]以進行比較,例如:

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

假設pos的類型與float相當。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM