IPropertyValueUIService Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет интерфейс для управления изображениями, подсказками и обработчиками событий для свойств компонентов, отображенных в обозревателе свойств.
public interface class IPropertyValueUIService
public interface IPropertyValueUIService
type IPropertyValueUIService = interface
Public Interface IPropertyValueUIService
Примеры
В следующем примере кода создается компонент, который получает экземпляр IPropertyValueUIService интерфейса и добавляет в PropertyValueUIHandler службу . Обработчик предоставляет PropertyValueUIItem объект для любых свойств компонента с именем HorizontalMargin
или VerticalMargin
. Для PropertyValueUIItem этих свойств предоставляет изображение, подсказку и обработчик событий, который отображает окно сообщения при щелчке изображения для свойства. Изображение и подсказка отображаются в , PropertyGrid когда в сетке отображаются эти свойства компонента.
using System.Collections;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
namespace PropertyValueUIServiceExample
{
// This component obtains the IPropertyValueUIService and adds a
// PropertyValueUIHandler that provides PropertyValueUIItem objects,
// which provide an image, ToolTip, and invoke event handler to
// any properties named HorizontalMargin and VerticalMargin,
// such as the example integer properties on this component.
public class PropertyUIComponent : System.ComponentModel.Component
{
// Example property for which to provide a PropertyValueUIItem.
public int HorizontalMargin { get; set; }
// Example property for which to provide a PropertyValueUIItem.
public int VerticalMargin { get; set; }
// Field storing the value of the VerticalMargin property.
private int vMargin;
// Constructor.
public PropertyUIComponent(System.ComponentModel.IContainer container)
{
if (container != null)
container.Add(this);
HorizontalMargin = 0;
VerticalMargin = 0;
}
// Default component constructor that specifies no container.
public PropertyUIComponent() : this(null)
{ }
// PropertyValueUIHandler delegate that provides PropertyValueUIItem
// objects to any properties named HorizontalMargin or VerticalMargin.
private void marginPropertyValueUIHandler(
System.ComponentModel.ITypeDescriptorContext context,
System.ComponentModel.PropertyDescriptor propDesc,
ArrayList itemList)
{
// A PropertyValueUIHandler added to the IPropertyValueUIService
// is queried once for each property of a component and passed
// a PropertyDescriptor that represents the characteristics of
// the property when the Properties window is set to a new
// component. A PropertyValueUIHandler can determine whether
// to add a PropertyValueUIItem for the object to its ValueUIItem
// list depending on the values of the PropertyDescriptor.
if (propDesc.DisplayName.Equals("HorizontalMargin"))
{
Image img = Image.FromFile("SampImag.jpg");
itemList.Add(new PropertyValueUIItem(img, new PropertyValueUIItemInvokeHandler(this.marginInvoke), "Test ToolTip"));
}
if (propDesc.DisplayName.Equals("VerticalMargin"))
{
Image img = Image.FromFile("SampImag.jpg");
img.RotateFlip(RotateFlipType.Rotate90FlipNone);
itemList.Add(new PropertyValueUIItem(img, new PropertyValueUIItemInvokeHandler(this.marginInvoke), "Test ToolTip"));
}
}
// Invoke handler associated with the PropertyValueUIItem objects
// provided by the marginPropertyValueUIHandler.
private void marginInvoke(System.ComponentModel.ITypeDescriptorContext context, System.ComponentModel.PropertyDescriptor propDesc, PropertyValueUIItem item)
{
MessageBox.Show("Test invoke message box");
}
// Component.Site override to add the marginPropertyValueUIHandler
// when the component is sited, and to remove it when the site is
// set to null.
public override System.ComponentModel.ISite Site
{
get
{
return base.Site;
}
set
{
if (value != null)
{
base.Site = value;
IPropertyValueUIService uiService = (IPropertyValueUIService)this.GetService(typeof(IPropertyValueUIService));
if (uiService != null)
uiService.AddPropertyValueUIHandler(new PropertyValueUIHandler(this.marginPropertyValueUIHandler));
}
else
{
IPropertyValueUIService uiService = (IPropertyValueUIService)this.GetService(typeof(IPropertyValueUIService));
if (uiService != null)
uiService.RemovePropertyValueUIHandler(new PropertyValueUIHandler(this.marginPropertyValueUIHandler));
base.Site = value;
}
}
}
}
}
Комментарии
Компонент может использовать интерфейс для предоставления IPropertyValueUIServicePropertyValueUIItem объектов для любых свойств компонента. Объект , PropertyValueUIItem связанный со свойством, может предоставить изображение, подсказку и обработчик событий для события, которое возникает при щелчке изображения, связанного со свойством .
Интерфейс IPropertyValueUIService предоставляет методы для добавления, удаления и извлечения PropertyValueUIHandler делегатов во внутреннем списке или из него. Когда свойства компонента отображаются в браузере свойств, каждому PropertyValueUIHandler из них в списке предоставляется возможность предоставить PropertyValueUIItem для каждого свойства компонента.
Если браузер свойств настроен для отображения свойств объекта, он вызывает GetPropertyUIValueItems метод этого интерфейса для каждого свойства компонента, передавая объект PropertyDescriptor , представляющий свойство . Метод GetPropertyUIValueItems вызывает все PropertyValueUIHandler , что было добавлено в службу. Каждый из них PropertyValueUIHandler может добавить PropertyValueUIItem к параметру, ArrayList передаваемого в параметре valueUIItemList
, для предоставления элементов пользовательского интерфейса для свойства, представленного PropertyDescriptor переданным в параметре propDesc
.
Может PropertyValueUIItem содержать изображение, отображаемое рядом с именем свойства, строку подсказки и обработчик событий, вызываемый при двойном щелчке изображения, связанного со свойством.
Методы
AddPropertyValueUIHandler(PropertyValueUIHandler) |
Добавляет указанный обработчик PropertyValueUIHandler в данную службу. |
GetPropertyUIValueItems(ITypeDescriptorContext, PropertyDescriptor) |
Возвращает объекты PropertyValueUIItem, которые соответствуют заданному контексту и характеристикам дескриптора свойства. |
NotifyPropertyValueUIItemsChanged() |
Уведомляет реализацию IPropertyValueUIService об изменении глобального списка объектов PropertyValueUIItem. |
RemovePropertyValueUIHandler(PropertyValueUIHandler) |
Удаляет из службы пользовательского интерфейса значения свойства заданный обработчик PropertyValueUIHandler. |
События
PropertyUIValueItemsChanged |
Происходит при изменении списка объектов PropertyValueUIItem. |