MS Word Interop - 隐藏内容控件占位符文本但保留内容控件

MS Word Interop - Hide content control placeholder text but retain the content control

我有一个带有内容控件的 table。填充 table 后,我会删除所有内容控件而不删除实际内容,但我保留的第一行除外,以便在我想重新填充 table 时可以使用它。问题是有时第一行中的行没有值,因此显示灰色文本。 结果看起来像这样-

是否可以隐藏内容控件(特别是灰色文本)但不完全删除它,以便我以后需要时仍然可以使用它?从设置文本颜色到隐藏内容控件的字体,我都试过了,但都没有达到我想要的效果。

灰色文本的技术术语是 "Placeholder text"。以下是您可以使用的一些基本方法:

  1. 有一个名为 "Placeholder text" 的内置文档样式。您可以将它的 Font.Hidden 属性 设置为 True 这样,虽然您仍会在屏幕上看到它,但它不会打印出来。

执行此操作的代码:

ActiveDocument.Styles("Placeholder text").Font.Hidden = True
'To change it back
'ActiveDocument.Styles("Placeholder text").Font.Hidden = False
  1. 您还可以将占位符文本设置为单个 space,这样可以有效地隐藏内容控件。它仍然存在,但您必须知道它存在才能定位它(单击它)。

示例代码:

Sub TogglePlaceholderText()
  Dim cc As word.ContentControl
  Dim sAltPlaceholder As String

  'Before running this macro make sure the placeholder
  'is written to the content control's Tag property
  sAltPlaceholder = " "
  Set cc = ActiveDocument.SelectContentControlsByTitle("CC_Test").Item(1)
  If cc.ShowingPlaceholderText And cc.Tag = cc.PlaceholderText Then
    cc.SetPlaceholderText Text:=sAltPlaceholder
  Else
    cc.SetPlaceholderText Text:=cc.Tag
  End If
End Sub
  1. SO 技术上离题,但您也可以手动更改占位符。在 Developer Tools 选项卡中,Controls 组单击 "Design mode"。更改 "markers" 之间的文本,注意不要先删除那里的内容。这样您就不会丢失 "Placeholder text" 样式格式,从而保留灰色。 (注意至少需要一个字符,但可以是space)。再次单击 "Design mode"。
  2. 与宏代码类似,您也可以使用样式管理工具直接在 UI 中更改 "Placeholder text" 样式的定义。