Поделиться через


Сетка отображения свойств

В окне "Свойства" отображаются поля в сетке. Левый столбец содержит имена свойств; Правый столбец содержит значения свойств.

Работа с сеткой

В списке двух столбцов отображаются независимые от конфигурации свойства, которые могут быть изменены во время разработки и их текущих параметров. Обратите внимание, что все свойства могут не отображаться. Свойство можно задать как скрытое, например путем реализации HideProperty метода. В частности, чтобы скрыть свойства, имеющие дочерние свойства:

  1. pfDisplay Задайте для параметра DisplayChildProperties FALSEзначение .

  2. pfHide Задайте для параметра HideProperty TRUEзначение .

Для отправки сведений в окно свойств интегрированная среда разработки использует ISelectionContainer. ISelectionContainer вызывается VSPackages для каждого окна, содержащего доступные для выбора объекты со связанными свойствами, отображаемыми в окне свойств . реализация вызовов ISelectionContainer GetProperty Обозреватель решений с помощью __VSHPROPID. VSHPROPID_BrowseObject в иерархии проекта, чтобы получить просматриваемые объекты в иерархии.

Если VSPackage не поддерживает __VSHPROPID. VSHPROPID_BrowseObject интегрированная среда разработки пытается использовать GetProperty значение для __VSHPROPID. VSHPROPID_SelContainer, который предоставляет элемент иерархии или элементы.

Проект VSPackage не требуется создаватьISelectionContainer, так как предоставленный IDE пакет окна, реализующий его (например, Обозреватель решений) конструкций ISelectionContainer от его имени.

ISelectionContainer состоит из трех методов, вызываемых интегрированной интегрированной среды разработки:

  • CountObjects содержит количество выбранных объектов в окне "Свойства ".

  • GetObjectsIDispatch возвращает объекты, выбранные для отображения в окне "Свойства".

  • SelectObjects позволяет выбрать любой объект, возвращаемый GetObjects пользователем. Это позволяет VSPackage визуально обновлять выбранный элемент, отображаемый пользователю в пользовательском интерфейсе.

Окно свойств извлекает сведения из IDispatch объектов, чтобы получить просматриваемые свойства. Браузер "Свойства" используется IDispatch для запроса объекта, из которого он поддерживает ITypeInfoсвойства, полученные из IDispatch::GetTypeInfoзапроса. Затем браузер использует эти значения для заполнения окна свойств и изменения значений отдельных свойств, отображаемых в сетке. Сведения о свойствах хранятся внутри самого объекта.

Так как возвращаемые объекты поддерживают IDispatch, вызывающий объект может получить такие сведения, как имя объекта, вызывая либо IDispatch::Invoke ITypeInfo::Invoke с предопределенным идентификатором диспетчера (DISPID), который представляет нужную информацию. Объявленные DISPID являются отрицательными, чтобы гарантировать, что они не конфликтуют с определяемыми пользователем идентификаторами.

В окне "Свойства" отображаются различные типы полей в зависимости от атрибутов определенных свойств выбранного объекта. К этим полям относятся поля редактирования, раскрывающийся список и ссылки на настраиваемые диалоговые окна редактора.

  • Значения, содержащиеся в перечисленном списке, извлекаются запросом GetObjects IDispatch. Значения, полученные из перечисленного списка, можно изменить в сетке свойств, дважды щелкнув имя поля или щелкнув значение и выбрав новое значение из раскрывающегося списка. Для свойств, которые имеют предопределенные параметры из перечисленных списков, дважды щелкните имя свойства в списке свойств циклически по доступным вариантам. Для предопределенных свойств с двумя вариантами выбора, например true/false, дважды щелкните имя свойства, чтобы переключиться между вариантами.

  • Если HasDefaultValue задано falseзначение, указывающее, что значение было изменено, значение отображается в полужирном тексте. CanResetPropertyValue используется для определения возможности сброса значения в исходное значение. Если это так, вы можете вернуться к умолчанию, щелкнув правой кнопкой мыши значение и выбрав "Сброс " в отображаемом меню. В противном случае необходимо изменить значение обратно на значение по умолчанию вручную. IVsPerPropertyBrowsing также позволяет локализовать и скрыть имена свойств, отображаемых во время разработки, но не влияет на имена свойств, отображаемые во время выполнения.

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

См. также