c# Word Interop - 设置段落缩进
c# Word Interop - Setting paragraph indentation
我需要以编程方式(在 C# 中)打开或关闭特定段落的悬挂缩进。
我已经创建了一个加载项,其中有一个按钮,单击该按钮时,会在我(尝试)执行此操作的地方执行代码。它是一个开关,因此第一次单击会添加悬挂缩进,第二次单击应将其删除。
换句话说,就是Paragraph>Indentation中的设置,后面跟着设置“Special”等于 None或挂。
我最好的尝试是使用以下代码:
foreach (Footnote rngWord in Globals.OSAXWord.Application.ActiveDocument.Content.Footnotes)
rngWord.Range.ParagraphFormat.TabHangingIndent(
rngWord.Range.ParagraphFormat.FirstLineIndent == 0 ? 1 : -1);
出于某种原因,它只修改了段落中的最后一行。我需要它是除了第一行之外所有挂起的行。我做错了什么?
修改:
注意 - 我实际上是在文档中的脚注上执行此操作。
对于可能碰巧遇到此问题的任何人 - 以下是我的解决方法:
try
{
// Loop through each footnote in the word doc.
foreach (Footnote rngWord in Microsoft.Office.Interop.Word.Application.ActiveDocument.Content.Footnotes)
{
// For each paragraph in the footnote - set the indentation.
foreach (Paragraph parag in rngWord.Range.Paragraphs)
{
// If this was not previously indented (i.e. FirstLineIndent is zero), then indent.
if (parag.Range.ParagraphFormat.FirstLineIndent == 0)
{
// Set hanging indent.
rngWord.Range.ParagraphFormat.TabHangingIndent(1);
}
else
{
// Remove hanging indent.
rngWord.Range.ParagraphFormat.TabHangingIndent(-1);
}
}
}
// Force the screen to refresh so we see the changes.
Microsoft.Office.Interop.Word.Application.ScreenRefresh();
}
catch (Exception ex)
{
// Catch any exception and swollow it (i.e. do nothing with it).
//MessageBox.Show(ex.Message);
}
我需要以编程方式(在 C# 中)打开或关闭特定段落的悬挂缩进。
我已经创建了一个加载项,其中有一个按钮,单击该按钮时,会在我(尝试)执行此操作的地方执行代码。它是一个开关,因此第一次单击会添加悬挂缩进,第二次单击应将其删除。
换句话说,就是Paragraph>Indentation中的设置,后面跟着设置“Special”等于 None或挂。
我最好的尝试是使用以下代码:
foreach (Footnote rngWord in Globals.OSAXWord.Application.ActiveDocument.Content.Footnotes)
rngWord.Range.ParagraphFormat.TabHangingIndent(
rngWord.Range.ParagraphFormat.FirstLineIndent == 0 ? 1 : -1);
出于某种原因,它只修改了段落中的最后一行。我需要它是除了第一行之外所有挂起的行。我做错了什么?
修改:
注意 - 我实际上是在文档中的脚注上执行此操作。
对于可能碰巧遇到此问题的任何人 - 以下是我的解决方法:
try
{
// Loop through each footnote in the word doc.
foreach (Footnote rngWord in Microsoft.Office.Interop.Word.Application.ActiveDocument.Content.Footnotes)
{
// For each paragraph in the footnote - set the indentation.
foreach (Paragraph parag in rngWord.Range.Paragraphs)
{
// If this was not previously indented (i.e. FirstLineIndent is zero), then indent.
if (parag.Range.ParagraphFormat.FirstLineIndent == 0)
{
// Set hanging indent.
rngWord.Range.ParagraphFormat.TabHangingIndent(1);
}
else
{
// Remove hanging indent.
rngWord.Range.ParagraphFormat.TabHangingIndent(-1);
}
}
}
// Force the screen to refresh so we see the changes.
Microsoft.Office.Interop.Word.Application.ScreenRefresh();
}
catch (Exception ex)
{
// Catch any exception and swollow it (i.e. do nothing with it).
//MessageBox.Show(ex.Message);
}