MS Word Interop — скрыть текст заполнителя элемента управления содержимым, но сохранить элемент управления содержимым

У меня есть таблица с элементами управления содержимым. После того, как я заполнил свою таблицу, я удаляю все элементы управления содержимым, не удаляя фактическое содержимое, за исключением первой строки, которую я сохраняю, чтобы я мог использовать ее, если когда-нибудь захочу повторно заполнить таблицу. Проблема в том, что иногда в первой строке есть строки без значений, поэтому отображается серый текст. Результат выглядит так-

введите здесь описание изображения

Можно ли скрыть элемент управления содержимым (в частности, серый текст), но не удалить его полностью, чтобы я мог использовать его, если мне позже потребуется? Я пробовал все, от установки цвета текста до скрытия шрифта элемента управления содержимым, но не добился желаемых результатов.


person Code Vader    schedule 24.02.2016    source источник
comment
вам нужно убрать управление контентом или скрыть его..??   -  person Dah Sra    schedule 24.02.2016
comment
Скрыть. Таким образом, в первой строке пустые столбцы (где находится серый текст в квадратных скобках) должны быть полностью пустыми, текст должен быть только в первом столбце. Есть ли способ сделать этот серый текст невидимым, не затрагивая столбцы, в которых есть настоящий текст, например первый столбец?   -  person Code Vader    schedule 24.02.2016
comment
поделитесь кодом того, как вы настраиваете элемент управления содержимым и как вы его скрываете до сих пор.   -  person Dah Sra    schedule 24.02.2016
comment
ContentControl.Удалить (ложь); но это также удалит текст, а contentControl.Range.Font.Hidden = 1; который также скроет текст, который я хочу сохранить   -  person Code Vader    schedule 24.02.2016


Ответы (1)


Технический термин для серого текста — «текст-заполнитель». Вот несколько основных подходов, которые вы можете использовать:

  1. Существует встроенный стиль документа под названием «Текст-заполнитель». Вы можете установить для его свойства Font.Hidden значение True, чтобы оно не печаталось, пока вы все еще видите его на экране.

Код для этого:

ActiveDocument.Styles("Placeholder text").Font.Hidden = True
'To change it back
'ActiveDocument.Styles("Placeholder text").Font.Hidden = False
  1. Вы также можете установить текст заполнителя на один пробел, который эффективно скрывает элемент управления содержимым. Он все еще там, но вы должны знать, что он там, чтобы нацелить его (щелкните по нему).

Образец кода:

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, но вы также можете изменить заполнитель вручную. На вкладке «Инструменты разработчика» в группе «Элементы управления» нажмите «Режим дизайна». Измените текст между «маркерами», стараясь НЕ удалить то, что там есть. Это делается для того, чтобы вы не потеряли форматирование стиля «Текст-заполнитель», чтобы сохранить серый цвет. (Обратите внимание, что для этого нужен хотя бы один символ, но это может быть и пробел). Нажмите «Режим дизайна» еще раз.
  2. Подобно коду макроса, вы также можете изменить определение стиля «Текст-заполнитель» непосредственно в пользовательском интерфейсе с помощью инструментов управления стилями.
person Cindy Meister    schedule 24.02.2016