使用相同多级列表样式的多个标题样式

时间:2016-05-20 17:57:48

标签: ms-word vsto office-interop

我尝试将编号分配给Word中的多个标题样式,以便获得如下内容:

6. <Heading 1>
6.1. <Heading 2>
6.1.1. <Heading 3>
6.2. <Heading 2>
6.2.1. <Heading 3>
6.3. <Heading 2>

您可以使用第二个多级编号样式(忽略&#39;无&#39;)在标准Word中轻松完成此操作,如下所示:

1.
1.1.
1.1.1.

但是我试图通过在代码中应用第二个多级编号样式来动态地执行此操作,它就像这样:

6. <Heading 1>
1.1 <Heading 2>
1.1.1 <Heading 3>
7. <Heading 1>
1.2 <Heading 2>
1.1.2 <Heading 3>

如果我在此之后手动应用第二个多级编号样式,它将更改为所需的输出。

这是我的代码(有点简化,但不是很多)。

ListGallery gallery = doc.Application.ListGalleries[WdListGalleryType.wdOutlineNumberGallery];
ListTemplate numberedTemplate = gallery.ListTemplates[2];
for (int i = 1; i < 10; i++)
{
  Style style = doc.Styles["Heading " + i];
  style.LinkToListTemplate(numberedTemplate, i);
}

1 个答案:

答案 0 :(得分:2)

使用ListGalleries不可靠/健壮。对于索引(从UI中的列表中选择数字格式),您无法确定列表的内容始终是相同的 - 这种缺点是显而易见的。

内置画廊的问题,例如您正在使用的,是这个特定的画廊有一个&#34;错误&#34; (正如它在首次发布时在用户界面中所做的那样):2级和3级没有&#34;重新启动列表&#34;设置已激活,因此您将获得所描述的行为。

出于这个原因,在创建自定义列表时记录宏最好,最好使用&#34;定义新列表样式&#34;从大纲编号菜单。然后,您可以在任何地方使用该代码。

定义命名列表样式将为您提供一个命名列表模板,这意味着它可以直接重复使用和管理。 (在您的代码中,您使用索引值来引用ListTemplate,如果您打算使用的那个不是集合中的第二个,则可能会出错。)