Bagikan melalui


IPropertyValueUIService Antarmuka

Definisi

Menyediakan antarmuka untuk mengelola gambar, TipsAlat, dan penanganan aktivitas untuk properti komponen yang ditampilkan di browser properti.

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

Contoh

Contoh kode berikut membuat komponen yang mendapatkan instans IPropertyValueUIService antarmuka dan menambahkan PropertyValueUIHandler ke layanan. Handler menyediakan PropertyValueUIItem objek untuk setiap properti komponen bernama HorizontalMargin atau VerticalMargin. PropertyValueUIItem untuk properti ini menyediakan gambar, TipsAlat, dan penanganan aktivitas yang menampilkan kotak pesan saat gambar untuk properti diklik. Gambar dan TipsAlat ditampilkan di PropertyGrid saat kisi menampilkan properti komponen ini.

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

Keterangan

Komponen dapat menggunakan IPropertyValueUIService antarmuka untuk menyediakan PropertyValueUIItem objek untuk properti komponen apa pun. Properti PropertyValueUIItem yang terkait dapat menyediakan gambar, TipsAlat, dan penanganan aktivitas untuk peristiwa yang dimunculkan saat gambar yang terkait dengan properti diklik.

Antarmuka IPropertyValueUIService menyediakan metode untuk menambahkan, menghapus, dan mengambil PropertyValueUIHandler delegasi ke atau dari daftar internal. Ketika properti komponen ditampilkan di browser properti, masing-masing PropertyValueUIHandler dalam daftar diberi kesempatan untuk menyediakan PropertyValueUIItem untuk setiap properti komponen.

Ketika browser properti diatur untuk menampilkan properti objek, browser properti memanggil GetPropertyUIValueItems metode antarmuka ini untuk setiap properti komponen, meneruskan PropertyDescriptor yang mewakili properti . Metode memanggil GetPropertyUIValueItems masing-masing PropertyValueUIHandler yang telah ditambahkan ke layanan. Masing-masing PropertyValueUIHandler dapat menambahkan ke parameter yang PropertyValueUIItemArrayList diteruskan dalam valueUIItemList parameter untuk menyediakan item UI untuk properti yang diwakili oleh yang PropertyDescriptor diteruskan dalam propDesc parameter .

PropertyValueUIItem dapat berisi gambar untuk ditampilkan di samping nama properti, string TipsAlat, dan penanganan aktivitas untuk dipanggil saat gambar yang terkait dengan properti diklik dua kali.

Metode

AddPropertyValueUIHandler(PropertyValueUIHandler)

Menambahkan yang ditentukan PropertyValueUIHandler ke layanan ini.

GetPropertyUIValueItems(ITypeDescriptorContext, PropertyDescriptor)

Mendapatkan objek yang cocok dengan PropertyValueUIItem konteks dan karakteristik deskriptor properti yang ditentukan.

NotifyPropertyValueUIItemsChanged()

Memberi tahu IPropertyValueUIService implementasi bahwa daftar PropertyValueUIItem objek global telah dimodifikasi.

RemovePropertyValueUIHandler(PropertyValueUIHandler)

Menghapus yang ditentukan PropertyValueUIHandler dari layanan UI nilai properti.

Acara

PropertyUIValueItemsChanged

Terjadi ketika daftar PropertyValueUIItem objek dimodifikasi.

Berlaku untuk

Lihat juga