MS Word Interop - 隐藏内容控件占位符文本但保留内容控件
MS Word Interop - Hide content control placeholder text but retain the content control
我有一个带有内容控件的 table。填充 table 后,我会删除所有内容控件而不删除实际内容,但我保留的第一行除外,以便在我想重新填充 table 时可以使用它。问题是有时第一行中的行没有值,因此显示灰色文本。
结果看起来像这样-
是否可以隐藏内容控件(特别是灰色文本)但不完全删除它,以便我以后需要时仍然可以使用它?从设置文本颜色到隐藏内容控件的字体,我都试过了,但都没有达到我想要的效果。
灰色文本的技术术语是 "Placeholder text"。以下是您可以使用的一些基本方法:
- 有一个名为 "Placeholder text" 的内置文档样式。您可以将它的
Font.Hidden
属性 设置为 True
这样,虽然您仍会在屏幕上看到它,但它不会打印出来。
执行此操作的代码:
ActiveDocument.Styles("Placeholder text").Font.Hidden = True
'To change it back
'ActiveDocument.Styles("Placeholder text").Font.Hidden = False
- 您还可以将占位符文本设置为单个 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
- SO 技术上离题,但您也可以手动更改占位符。在 Developer Tools 选项卡中,Controls 组单击 "Design mode"。更改 "markers" 之间的文本,注意不要先删除那里的内容。这样您就不会丢失 "Placeholder text" 样式格式,从而保留灰色。 (注意至少需要一个字符,但可以是space)。再次单击 "Design mode"。
- 与宏代码类似,您也可以使用样式管理工具直接在 UI 中更改 "Placeholder text" 样式的定义。
我有一个带有内容控件的 table。填充 table 后,我会删除所有内容控件而不删除实际内容,但我保留的第一行除外,以便在我想重新填充 table 时可以使用它。问题是有时第一行中的行没有值,因此显示灰色文本。 结果看起来像这样-
是否可以隐藏内容控件(特别是灰色文本)但不完全删除它,以便我以后需要时仍然可以使用它?从设置文本颜色到隐藏内容控件的字体,我都试过了,但都没有达到我想要的效果。
灰色文本的技术术语是 "Placeholder text"。以下是您可以使用的一些基本方法:
- 有一个名为 "Placeholder text" 的内置文档样式。您可以将它的
Font.Hidden
属性 设置为True
这样,虽然您仍会在屏幕上看到它,但它不会打印出来。
执行此操作的代码:
ActiveDocument.Styles("Placeholder text").Font.Hidden = True
'To change it back
'ActiveDocument.Styles("Placeholder text").Font.Hidden = False
- 您还可以将占位符文本设置为单个 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
- SO 技术上离题,但您也可以手动更改占位符。在 Developer Tools 选项卡中,Controls 组单击 "Design mode"。更改 "markers" 之间的文本,注意不要先删除那里的内容。这样您就不会丢失 "Placeholder text" 样式格式,从而保留灰色。 (注意至少需要一个字符,但可以是space)。再次单击 "Design mode"。
- 与宏代码类似,您也可以使用样式管理工具直接在 UI 中更改 "Placeholder text" 样式的定义。