IPropertyValueUIService Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje rozhraní pro správu obrázků, popisů a obslužných rutin událostí pro vlastnosti komponenty zobrazené v prohlížeči vlastností.
public interface class IPropertyValueUIService
public interface IPropertyValueUIService
type IPropertyValueUIService = interface
Public Interface IPropertyValueUIService
Příklady
Následující příklad kódu vytvoří komponentu, která získá instanci IPropertyValueUIService rozhraní a přidá PropertyValueUIHandler do služby . Obslužná rutina poskytuje PropertyValueUIItem objekt pro všechny vlastnosti komponenty s názvem HorizontalMargin
nebo VerticalMargin
. Vlastnost PropertyValueUIItem pro tyto vlastnosti poskytuje obrázek, popis a obslužnou rutinu události, která při kliknutí na obrázek pro vlastnost zobrazí okno se zprávou. Obrázek a popis se zobrazí v objektu PropertyGrid , když mřížka zobrazuje tyto vlastnosti komponenty.
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;
}
}
}
}
}
Poznámky
Komponenta IPropertyValueUIService může použít rozhraní k poskytování PropertyValueUIItem objektů pro jakékoli vlastnosti komponenty. Přidružený PropertyValueUIItem k vlastnosti může poskytnout obrázek, popis a obslužnou rutinu události, která je vyvolána při kliknutí na obrázek přidružený k vlastnosti.
Rozhraní IPropertyValueUIService poskytuje metody pro přidávání, odebírání a načítání PropertyValueUIHandler delegátů do interního seznamu nebo z interního seznamu. Když se vlastnosti komponenty zobrazí v prohlížeči vlastností, každý PropertyValueUIHandler v seznamu má možnost zadat PropertyValueUIItem pro každou vlastnost komponenty .
Když je prohlížeč vlastností nastaven tak, aby zobrazoval vlastnosti objektu, volá metodu GetPropertyUIValueItems tohoto rozhraní pro každou vlastnost komponenty a předává , PropertyDescriptor která představuje vlastnost. Metoda GetPropertyUIValueItems volá každou PropertyValueUIHandler , která byla přidána do služby. Každý PropertyValueUIHandler může přidat PropertyValueUIItem do parametru ArrayList předaného v parametru valueUIItemList
položky uživatelského rozhraní pro vlastnost reprezentovanou PropertyDescriptor předanou v parametru propDesc
.
Objekt PropertyValueUIItem může obsahovat obrázek, který se zobrazí vedle názvu vlastnosti, řetězce popisku a obslužné rutiny události, která se vyvolá při poklikání na obrázek přidružený k vlastnosti.
Metody
AddPropertyValueUIHandler(PropertyValueUIHandler) |
Přidá zadaný PropertyValueUIHandler parametr do této služby. |
GetPropertyUIValueItems(ITypeDescriptorContext, PropertyDescriptor) |
PropertyValueUIItem Získá objekty, které odpovídají zadaný kontext a vlastnosti popisovače charakteristiky. |
NotifyPropertyValueUIItemsChanged() |
Oznámí implementaci IPropertyValueUIService , že globální seznam PropertyValueUIItem objektů byl změněn. |
RemovePropertyValueUIHandler(PropertyValueUIHandler) |
Odebere zadanou PropertyValueUIHandler položku z hodnoty vlastnosti ui service. |
Událost
PropertyUIValueItemsChanged |
Vyvolá se při změně seznamu PropertyValueUIItem objektů. |