Share via


IPropertyValueUIService Arabirim

Tanım

Özellik tarayıcısında görüntülenen bir bileşenin özellikleri için görüntüleri, Araç İpuçlarını ve olay işleyicilerini yönetmek için bir arabirim sağlar.

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

Örnekler

Aşağıdaki kod örneği, arabirimin bir örneğini IPropertyValueUIService alan ve hizmete bir ekleyen bir PropertyValueUIHandler bileşen oluşturur. İşleyici, veya VerticalMarginadlı HorizontalMargin bileşenin tüm özellikleri için bir PropertyValueUIItem nesnesi sağlar. PropertyValueUIItem Bu özellikler için özelliğin görüntüsüne tıklandığında bir ileti kutusu görüntüleyen bir görüntü, Araç İpucu ve olay işleyicisi sağlar. Görüntü ve Araç İpucu, kılavuz bileşenin bu özelliklerini gösterdiğinde görüntülenir 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;
                }
            }
        }
    }
}

Açıklamalar

Bir bileşen, bileşenin IPropertyValueUIService herhangi bir özelliği için nesneler sağlamak PropertyValueUIItem üzere arabirimini kullanabilir. Bir PropertyValueUIItem özellik ile ilişkili bir görüntü, bir ToolTip ve özellik ile ilişkili görüntü tıklandığında oluşturulan olay için bir olay işleyicisi sağlayabilir.

Arabirim, IPropertyValueUIService iç listeye temsilci ekleme, kaldırma ve iç listeden temsilci alma PropertyValueUIHandler yöntemleri sağlar. Bir bileşenin özellikleri bir özellik tarayıcısında görüntülendiğinde, listedeki her PropertyValueUIHandler bileşene bileşenin her özelliği için bir PropertyValueUIItem sağlama fırsatı verilir.

Özellik tarayıcısı bir nesnenin özelliklerini görüntüleyecek şekilde ayarlandığında, bileşenin GetPropertyUIValueItems her özelliği için bu arabirimin yöntemini çağırır ve özelliği temsil eden bir PropertyDescriptor geçirir. GetPropertyUIValueItems yöntemi, hizmete eklenen her PropertyValueUIHandler bir hizmeti çağırır. Her PropertyValueUIHandler biri, parametresinde valueUIItemList geçirilen ile temsil edilen özelliğin kullanıcı arabirimi öğelerini sağlamak için parametresinde geçirilen parametreye PropertyDescriptorpropDesc bir PropertyValueUIItemArrayList ekleyebilir.

özelliği PropertyValueUIItem , özellik adının yanında görüntülenecek bir görüntü, bir ToolTip dizesi ve özelliğiyle ilişkilendirilmiş bir görüntüye çift tıklandığında çağrılacak bir olay işleyicisi içerebilir.

Yöntemler

AddPropertyValueUIHandler(PropertyValueUIHandler)

Belirtilen PropertyValueUIHandler öğesini bu hizmete ekler.

GetPropertyUIValueItems(ITypeDescriptorContext, PropertyDescriptor)

PropertyValueUIItem Belirtilen bağlam ve özellik tanımlayıcısı özellikleriyle eşleşen nesneleri alır.

NotifyPropertyValueUIItemsChanged()

Genel nesne listesinin PropertyValueUIItem değiştirildiğini uygulamaya bildirirIPropertyValueUIService.

RemovePropertyValueUIHandler(PropertyValueUIHandler)

Belirtilen PropertyValueUIHandler öğesini özellik değeri UI hizmetinden kaldırır.

Ekinlikler

PropertyUIValueItemsChanged

Nesne listesi PropertyValueUIItem değiştirildiğinde gerçekleşir.

Şunlara uygulanır

Ayrıca bkz.