1

我正在尝试将带有标题和一些文本的段落插入到 word 文档中。

一切正常,除了当我应用标题样式时,它会更改以下文本的样式,或者,当我将段落正文更改回“正常”时,它将标题更改回纯文本。我无法将它们识别为单独的段落,显然我做错了什么,但我看不出是什么。附上实际代码:-

Word.Paragraph p2 = wD.Paragraphs.Add(R.End);
Word.Range r2 = p2.Range;
r2.InsertAfter("If any updates were made then link to  the follow on program "
        + curTarget.followOn + ".\n");
string style = "Normal";
object objStyle = style;
r2.set_Style(ref objStyle);
r2.InsertParagraphAfter();
Word.Paragraph p3 = wD.Paragraphs.Add(r2);
Word.Range r3 = p3.Range;
r3.Text = "Call follow on process.\n";
style = "Heading 4";
objStyle = style;
r3.set_Style(ref objStyle);
r2.InsertParagraphAfter();

为凌乱的代码道歉,但它被重新(de)分解了大约 20 次。

4

1 回答 1

3

正如我在评论中指出的那样,您的某些代码看起来很像 J#而不是 C#。不确定这会造成多少混乱。

我注意到Word.Range.set_Style正在ref争论。而且我注意到您传入的引用是同一个变量,您在调用之间重新分配set_Style

string style = "Normal";
object objStyle = style;
r2.set_Style(ref objStyle);
...
style = "Heading 4";
objStyle = style;
r3.set_Style(ref objStyle);

相反,请尝试为第二种样式重新声明一个新变量:

string style = "Normal";
object objStyle = style;
r2.set_Style(ref objStyle);
...
string style2 = "Heading 4";
object objStyle2 = style2;
r3.set_Style(ref objStyle2);

老实说,这是一个疯狂的猜测 - 使用ref和重新分配在这里应该无关紧要,至少在 C#中,但是当我查看您的代码时它确实引发了一个标志。

如果代码实际上是 J#,则使用 可能ref会导致导致您的问题的替代行为 - 我无法找到足够的 J# 文档来证明或反驳这个理论。

于 2012-08-21T02:11:41.743 回答