IPropertyValueUIService Interface

Definitie

Biedt een interface voor het beheren van de afbeeldingen, knopinfo en gebeurtenis-handlers voor de eigenschappen van een onderdeel dat wordt weergegeven in een eigenschapsbrowser.

public interface class IPropertyValueUIService
public interface IPropertyValueUIService
type IPropertyValueUIService = interface
Public Interface IPropertyValueUIService

Voorbeelden

In het volgende codevoorbeeld wordt een onderdeel gemaakt dat een exemplaar van de IPropertyValueUIService interface verkrijgt en een PropertyValueUIHandler onderdeel toevoegt aan de service. De handler biedt een PropertyValueUIItem object voor alle eigenschappen van het onderdeel met de naam HorizontalMargin of VerticalMargin. De PropertyValueUIItem voor deze eigenschappen bevat een afbeelding, knopinfo en een gebeurtenis-handler die een berichtvak weergeeft wanneer op de afbeelding voor de eigenschap wordt geklikt. De afbeelding en de knopinfo worden weergegeven in een PropertyGrid wanneer het raster deze eigenschappen van het onderdeel weergeeft.

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;
                }
            }
        }
    }
}

Opmerkingen

Een onderdeel kan de IPropertyValueUIService interface gebruiken om objecten te bieden PropertyValueUIItem voor alle eigenschappen van het onderdeel. Een PropertyValueUIItem gekoppeld aan een eigenschap kan een afbeelding, knopinfo en een gebeurtenis-handler bieden voor de gebeurtenis die wordt gegenereerd wanneer de afbeelding die aan de eigenschap is gekoppeld, wordt geklikt.

De IPropertyValueUIService interface biedt methoden voor het toevoegen, verwijderen en ophalen PropertyValueUIHandler van gemachtigden naar of uit een interne lijst. Wanneer de eigenschappen van een onderdeel worden weergegeven in een eigenschappenbrowser, krijgt elk PropertyValueUIHandler in de lijst de mogelijkheid om een PropertyValueUIItem voor elke eigenschap van het onderdeel te bieden.

Wanneer een eigenschapsbrowser is ingesteld om de eigenschappen van een object weer te geven, wordt de GetPropertyUIValueItems methode van deze interface aangeroepen voor elke eigenschap van het onderdeel, waarbij een PropertyDescriptor eigenschap wordt doorgegeven die de eigenschap vertegenwoordigt. De GetPropertyUIValueItems methode roept elk PropertyValueUIHandler aan dat is toegevoegd aan de service. Elke PropertyValueUIHandler parameter kan een PropertyValueUIItem waarde toevoegen aan de ArrayList parameter die is doorgegeven in de valueUIItemList parameter om UI-items op te geven voor de eigenschap die wordt vertegenwoordigd door de PropertyDescriptor doorgegeven parameter propDesc .

Een PropertyValueUIItem kan een afbeelding bevatten die naast de eigenschapsnaam, een Knopinfo-tekenreeks en een gebeurtenis-handler moet worden weergegeven wanneer een afbeelding die aan de eigenschap is gekoppeld, wordt dubbelklikken.

Methoden

Name Description
AddPropertyValueUIHandler(PropertyValueUIHandler)

Voegt de opgegeven PropertyValueUIHandler waarde toe aan deze service.

GetPropertyUIValueItems(ITypeDescriptorContext, PropertyDescriptor)

Hiermee haalt u de PropertyValueUIItem objecten op die overeenkomen met de opgegeven context en eigenschappendescriptorkenmerken.

NotifyPropertyValueUIItemsChanged()

Hiermee wordt de IPropertyValueUIService implementatie aangegeven dat de algemene lijst met PropertyValueUIItem objecten is gewijzigd.

RemovePropertyValueUIHandler(PropertyValueUIHandler)

Hiermee verwijdert u de opgegeven PropertyValueUIHandler eigenschapswaarde uit de UI-service voor eigenschapswaarden.

gebeurtenis

Name Description
PropertyUIValueItemsChanged

Treedt op wanneer de lijst met PropertyValueUIItem objecten wordt gewijzigd.

Van toepassing op

Zie ook