无论是在OpenXML API还是Word/VSTO中,我都没有找到一种方法来创建或修改书签的可见性。即使在Word中手动添加书签,也没有需要检查的框来隐藏书签。尽管在“书签”对话框中有一个复选框,但是可以显示隐藏的书签。那么隐藏书签是如何在XML中表示的,您可以使用Open创建它们吗?或者它们是MS不再希望我们创造的遗产?
发布于 2011-03-30 13:48:40
好的,这比我要简单得多,thought...you在书签名前面加上下划线。请注意,这只能以编程的方式进行,而不是在Word中手动添加书签时。
很有趣..。
更新:我发现的另一件事--在您可以迭代或访问书签对象中的隐藏书签之前,必须将它的ShowHidden属性设置为true。
因此,如果您对拼写字典有任何控制,您可以添加“编程方式”。除非我拼错了。:)
发布于 2013-05-30 16:40:39
我在word文件中创建了普通书签,而不是以编程方式将它们转换为隐藏书签。如前所述,隐藏书签只能以编程方式创建,其名称在"_“之前。当迭代书签列表时,请确保Bookmarks.ShowHidden
设置为true,否则隐藏书签将不会出现在列表中。下面是我用来隐藏所有可见书签的代码。最后,我还清除了撤消记录,以确保用户不能撤消我所做的更改。如果愿意,可以创建自定义撤消记录,删除最后一个操作。
public static void hideAllBookmark(Document doc)
{
String newName = null;
Range newRange = null;
bool backup = doc.Bookmarks.ShowHidden;
doc.Bookmarks.ShowHidden = false;
for (int i = doc.Bookmarks.Count; i > 0; i--)
{
if (!doc.Bookmarks[i].Name.Substring(0, 1).Equals("_", StringComparison.OrdinalIgnoreCase))
{
newName= "_" + doc.Bookmarks[i].Name;
newRange = doc.Bookmarks[i].Range;
doc.Bookmarks[i].Delete();
doc.Bookmarks.Add(newName, newRange);
}
}
doc.Bookmarks.ShowHidden = backup;
doc.UndoClear();
}
https://stackoverflow.com/questions/5487022
复制相似问题