IPropertyValueUIService Interface

Définition

Fournit une interface permettant de gérer les images, les info-bulles et des gestionnaires d'événements pour les propriétés d'un composant affiché dans un explorateur de propriétés.

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

Exemples

L’exemple de code suivant crée un composant qui obtient un instance de l’interface IPropertyValueUIService et ajoute un PropertyValueUIHandler au service. Le gestionnaire fournit un PropertyValueUIItem objet pour toutes les propriétés du composant nommé HorizontalMargin ou VerticalMargin. Le PropertyValueUIItem pour ces propriétés fournit une image, une info-bulle et un gestionnaire d’événements qui affiche une boîte de message lorsque l’utilisateur clique sur l’image de la propriété. L’image et l’info-bulle sont affichées dans un PropertyGrid lorsque la grille affiche ces propriétés du composant.

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

Remarques

Un composant peut utiliser l’interface IPropertyValueUIService pour fournir des PropertyValueUIItem objets pour toutes les propriétés du composant. Un PropertyValueUIItem associé à une propriété peut fournir une image, une info-bulle et un gestionnaire d’événements pour l’événement déclenché lorsque l’utilisateur clique sur l’image associée à la propriété.

L’interface IPropertyValueUIService fournit des méthodes pour ajouter, supprimer et récupérer PropertyValueUIHandler des délégués dans ou à partir d’une liste interne. Lorsque les propriétés d’un composant sont affichées dans un navigateur de propriétés, chacun PropertyValueUIHandler dans la liste a la possibilité de fournir un PropertyValueUIItem pour chaque propriété du composant.

Lorsqu’un navigateur de propriétés est défini pour afficher les propriétés d’un objet, il appelle la GetPropertyUIValueItems méthode de cette interface pour chaque propriété du composant, en passant un PropertyDescriptor qui représente la propriété . La GetPropertyUIValueItems méthode appelle chaque PropertyValueUIHandler qui a été ajouté au service. Chacun PropertyValueUIHandler peut ajouter un PropertyValueUIItem au ArrayList paramètre passé dans le valueUIItemList paramètre pour fournir des éléments d’interface utilisateur pour la propriété représentée par le PropertyDescriptor passé dans le propDesc paramètre .

Un PropertyValueUIItem peut contenir une image à afficher en regard du nom de la propriété, d’une chaîne d’info-bulle et d’un gestionnaire d’événements à appeler lorsqu’une image associée à la propriété est double-cliqué.

Méthodes

AddPropertyValueUIHandler(PropertyValueUIHandler)

Ajoute le PropertyValueUIHandler spécifié à ce service.

GetPropertyUIValueItems(ITypeDescriptorContext, PropertyDescriptor)

Obtient les objets PropertyValueUIItem correspondant au contexte et aux caractéristiques de descripteur de propriétés spécifiés.

NotifyPropertyValueUIItemsChanged()

Indique à l'implémentation IPropertyValueUIService que la liste globale d'objets PropertyValueUIItem a été modifiée.

RemovePropertyValueUIHandler(PropertyValueUIHandler)

Supprime le PropertyValueUIHandler spécifié du service d'interface utilisateur de valeur de propriété.

Événements

PropertyUIValueItemsChanged

Se produit lorsque la liste d'objets PropertyValueUIItem est modifiée.

S’applique à

Voir aussi