次の方法で共有


IPropertyValueUIService インターフェイス

定義

プロパティ ブラウザーに表示されるコンポーネントのプロパティのイメージ、ツール ヒント、およびイベント ハンドラーを管理するユーザー インターフェイスを提供します。

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

次のコード例では、 インターフェイスのインスタンスを取得し、 を IPropertyValueUIService サービスに追加 PropertyValueUIHandler するコンポーネントを作成します。 ハンドラーは、 または VerticalMarginという名前HorizontalMarginPropertyValueUIItemコンポーネントのプロパティに対して オブジェクトを提供します。 これらのプロパティの は 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;
                }
            }
        }
    }
}

注釈

コンポーネントは、 インターフェイスを IPropertyValueUIService 使用して、コンポーネントの任意のプロパティのオブジェクトを提供 PropertyValueUIItem できます。 PropertyValueUIItemプロパティに関連付けられた は、プロパティに関連付けられたイメージがクリックされたときに発生するイベントのイメージ、ツールヒント、およびイベント ハンドラーを提供できます。

インターフェイスには IPropertyValueUIService 、内部リストとの間でデリゲートを追加、削除、取得 PropertyValueUIHandler するためのメソッドが用意されています。 コンポーネントのプロパティがプロパティ ブラウザーに表示されると、一覧の各 PropertyValueUIHandler プロパティに コンポーネントのプロパティごとに を提供 PropertyValueUIItem する機会が与えられる。

オブジェクトのプロパティを表示するようにプロパティ ブラウザーを設定すると、コンポーネントの各プロパティに対してこのインターフェイスのメソッドが呼び出 GetPropertyUIValueItems され、 プロパティを表す が渡 PropertyDescriptor されます。 メソッドは GetPropertyUIValueItems 、サービスに追加された各 PropertyValueUIHandler を呼び出します。 パラメーターPropertyValueUIHandlerで渡された パラメーターに、 をArrayList追加PropertyValueUIItemして、 valueUIItemList パラメーターで渡された によってPropertyDescriptor表されるプロパティの UI 項目をpropDesc指定できます。

PropertyValueUIItemには、プロパティ名の横に表示するイメージ、ツールヒント文字列、およびプロパティに関連付けられているイメージがダブルクリックされたときに呼び出すイベント ハンドラーを含めることができます。

メソッド

AddPropertyValueUIHandler(PropertyValueUIHandler)

指定した PropertyValueUIHandler をこのサービスに追加します。

GetPropertyUIValueItems(ITypeDescriptorContext, PropertyDescriptor)

指定したコンテキストおよびプロパティ記述子の特性と一致する PropertyValueUIItem オブジェクトを取得します。

NotifyPropertyValueUIItemsChanged()

IPropertyValueUIService オブジェクトのグローバル リストが変更されたことを PropertyValueUIItem 実装に通知します。

RemovePropertyValueUIHandler(PropertyValueUIHandler)

プロパティ値 UI サービスから、指定した PropertyValueUIHandler を削除します。

イベント

PropertyUIValueItemsChanged

PropertyValueUIItem オブジェクトのリストが変更されたときに発生します。

適用対象

こちらもご覧ください