1

見出しといくつかのテキストを含む段落を単語文書に挿入しようとしています。

見出しスタイルを適用すると次のテキストのスタイルが変更されるか、段落本文を「通常」に戻すと見出しがプレーンテキストに戻る場合を除いて、すべて正常に機能します。それらを別々の段落として認識する言葉を得ることができません。明らかに、私は何か非常に間違ったことをしていますが、何がわからないのですか。実際のコードが添付されています:-

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();

コードが乱雑で申し訳ありませんが、約 20 回リファクタリングされています。

4

1 に答える 1

3

コメントで指摘したように、コードの一部はC# ではなくJ# に疑わしく見えます。それが混乱にどれだけ寄与しているかはわかりません。

私は議論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);

代わりに、2 番目のスタイルの新しい変数を再宣言してみてください。

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

正直なところ、これは大げさな推測です - の使用と再割り当ては、少なくとも C#refではここでは問題になりませんが、コードを調べたときにフラグが発生しました。

コードが実際に J# である場合、を使用するとref別の動作が発生し、問題が発生する可能性があります。ただし、この理論を証明または反論するのに十分な J# ドキュメントを見つけることができませんでした。

于 2012-08-21T02:11:41.743 に答える