![](/img/trans.png)
[英]Locking Word fields with Visual Studio C# program using Interop.Word - out of range
[英]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.