Tento článek byl přeložen strojově počítačem. Původní text zobrazíte přesunutím ukazatele myši nad jednotlivé věty článku. Další informace
Překlad
Originál
Toto téma nebylo dosud ohodnoceno - Ohodnotit toto téma

PropertyDescriptor – třída

Obsahuje abstraction vlastnosti třídy.

Obor názvů:  System.ComponentModel
Sestavení:  System (v System.dll)
[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true)]
public abstract class PropertyDescriptor : MemberDescriptor

Typ PropertyDescriptor zveřejňuje následující členy.

  NázevPopis
Chráněná metodaPodporováno rozhraním XNA FrameworkPropertyDescriptor(MemberDescriptor)Inicializuje novou instanci PropertyDescriptor třídy atributy zadaného názvu a MemberDescriptor.
Chráněná metodaPodporováno rozhraním XNA FrameworkPropertyDescriptor(MemberDescriptor, Attribute[])Inicializuje novou instanci PropertyDescriptor třídu s názvem zadaného MemberDescriptor a atributů v obou MemberDescriptor a Attribute pole.
Chráněná metodaPodporováno rozhraním XNA FrameworkPropertyDescriptor(String, Attribute[])Inicializuje novou instanci PropertyDescriptor Třída se zadaným názvem a atributy.
Na začátek
  NázevPopis
Chráněná vlastnostPodporováno rozhraním XNA FrameworkAttributeArrayZíská nebo nastaví pole atributů. (Zděděno z MemberDescriptor.)
Veřejná vlastnostAttributesZíská sadu atributů pro tohoto člena. (Zděděno z MemberDescriptor.)
Veřejná vlastnostCategoryZíská název kategorie, ke které patří člen, jak je uvedeno v CategoryAttribute. (Zděděno z MemberDescriptor.)
Veřejná vlastnostPodporováno rozhraním XNA FrameworkComponentTypeTyp součásti, kterou je povinen tuto vlastnost získá při přepsán v odvozené třídě.
Veřejná vlastnostConverterZíská konvertor typu pro tuto vlastnost.
Veřejná vlastnostDescriptionNačte popis členů podle DescriptionAttribute. (Zděděno z MemberDescriptor.)
Veřejná vlastnostDesignTimeOnlyTento člen by měl nastavit pouze v době návrhu podle, zda DesignOnlyAttribute. (Zděděno z MemberDescriptor.)
Veřejná vlastnostPodporováno rozhraním XNA FrameworkDisplayNameZíská název zobrazený v okně, jako je například okno Vlastnosti. (Zděděno z MemberDescriptor.)
Veřejná vlastnostIsBrowsableZíská hodnotu označující, zda je lze procházet podle členů BrowsableAttribute. (Zděděno z MemberDescriptor.)
Veřejná vlastnostIsLocalizableZíská hodnotu určující, zda by tato vlastnost lokalizován, jak je uvedeno v LocalizableAttribute.
Veřejná vlastnostPodporováno rozhraním XNA FrameworkIsReadOnlyPři přepsání v odvozené třídě získá hodnotu určující, zda je tato vlastnost jen pro čtení.
Veřejná vlastnostPodporováno rozhraním XNA FrameworkNameZíská název člena. (Zděděno z MemberDescriptor.)
Chráněná vlastnostPodporováno rozhraním XNA FrameworkNameHashCodeZíská kód hash pro název člena podle GetHashCode. (Zděděno z MemberDescriptor.)
Veřejná vlastnostPodporováno rozhraním XNA FrameworkPropertyTypeTyp vlastnosti získá při přepsán v odvozené třídě.
Veřejná vlastnostSerializationVisibilityZíská hodnotu určující, zda by tato vlastnost serializovaná, jak je uvedeno v DesignerSerializationVisibilityAttribute.
Veřejná vlastnostPodporováno rozhraním XNA FrameworkSupportsChangeEventsZíská hodnotu určující, zda oznámení změny hodnoty této vlastnosti mohou pocházet z mimo popisovače vlastnosti.
Na začátek
  NázevPopis
Veřejná metodaPodporováno rozhraním XNA FrameworkAddValueChangedUmožňuje další objekty při změně vlastnosti tohoto oznámení.
Veřejná metodaPodporováno rozhraním XNA FrameworkCanResetValueV odvozené třídě přepsána, vrátí zda obnovení objektu se změní jeho hodnotu.
Chráněná metodaPodporováno rozhraním XNA FrameworkCreateAttributeCollectionVytvoří sadu atributů pomocí pole atributů předaný konstruktoru. (Zděděno z MemberDescriptor.)
Chráněná metodaCreateInstanceVytvoří instanci určeného typu.
Veřejná metodaPodporováno rozhraním XNA FrameworkEqualsPorovná na jiný objekt, zda jsou rovnocenné. (Přepisuje MemberDescriptor.Equals(Object).)

V XNA Framework 3.0 je tento člen zděděn od Object.Equals(Object).
Chráněná metodaPodporováno rozhraním XNA FrameworkFillAttributesPřidá atributy PropertyDescriptor na určený seznam atributů v nadřazená třída (Přepisuje MemberDescriptor.FillAttributes(IList).)

V XNA Framework 3.0 je tento člen zděděn od MemberDescriptor.FillAttributes(IList).
Chráněná metodaPodporováno rozhraním XNA FrameworkFinalize

Umožňuje objektu pokusit se uvolnit prostředky a provést další operace vyčištění předtím, než je odstraněn při uvolňování paměti.

(Zděděno z Object.)
Veřejná metodaGetChildProperties()Vrátí výchozí PropertyDescriptorCollection.
Veřejná metodaGetChildProperties(Attribute[])Vrátí PropertyDescriptorCollection pomocí určené pole atributů jako filtr.
Veřejná metodaGetChildProperties(Object)Vrátí PropertyDescriptorCollection pro daný objekt.
Veřejná metodaGetChildProperties(Object, Attribute[])Vrátí PropertyDescriptorCollection pro daný objekt pomocí určené pole atributů jako filtr.
Veřejná metodaGetEditorZíská editor zadaného typu.
Veřejná metodaPodporováno rozhraním XNA FrameworkGetHashCodeVrátí kód hash pro tento objekt. (Přepisuje MemberDescriptor.GetHashCode().)

V XNA Framework je tento člen přepsán GetHashCode().
Chráněná metodaGetInvocationTargetTato metoda vrátí objekt použitý při vyvolání členů. (Přepisuje MemberDescriptor.GetInvocationTarget(Type, Object).)
Veřejná metodaPodporováno rozhraním XNA FrameworkGetTypeZískává Type aktuální instance. (Zděděno z Object.)
Chráněná metodaGetTypeFromNameVrátí hodnotu typu pomocí jeho názvu.
Veřejná metodaPodporováno rozhraním XNA FrameworkGetValuePři přepsání v odvozené třídě získá aktuální hodnotu vlastnosti komponenty.
Chráněná metodaPodporováno rozhraním XNA FrameworkGetValueChangedHandlerNačte aktuální sadu ValueChanged obslužné rutiny pro určité komponenty
Chráněná metodaPodporováno rozhraním XNA FrameworkMemberwiseClone Vytvoří mělkou kopii aktuálního Object. (Zděděno z Object.)
Chráněná metodaPodporováno rozhraním XNA FrameworkOnValueChangedZvýší ValueChanged událost, která je implementována.
Veřejná metodaPodporováno rozhraním XNA FrameworkRemoveValueChangedUmožňuje další objekty při změně vlastnosti tohoto oznámení.
Veřejná metodaPodporováno rozhraním XNA FrameworkResetValuePři přepsání v odvozené třídě obnoví hodnotu pro tuto vlastnost komponenty výchozí hodnotu.
Veřejná metodaPodporováno rozhraním XNA FrameworkSetValuePři přepsání v odvozené třídě nastaví hodnotu komponenty na jinou hodnotu.
Veřejná metodaPodporováno rozhraním XNA FrameworkShouldSerializeValueKdyž přepsán v odvozené třídě Určuje hodnotu označující, zda hodnota této vlastnosti je trvalé.
Veřejná metodaPodporováno rozhraním XNA FrameworkToStringVrátí řetězec, který představuje aktuální objekt. (Zděděno z Object.)
Na začátek

Popis vlastnosti se skládá z názvu a jeho atributy, spojenou s vlastnost třídy komponenty typu vlastnosti.

PropertyDescriptor poskytuje následující vlastnosti a metody:

PropertyDescriptor obsahuje také následující abstract Vlastnosti a metody:

  • ComponentType obsahuje typ součást, kterou je povinen tuto vlastnost.

  • IsReadOnly označuje, zda je tato vlastnost jen pro čtení.

  • PropertyType získá typ vlastnosti.

  • CanResetValue označuje, zda komponenta resetování změní hodnotu komponenty.

  • GetValue Vrací aktuální hodnotu vlastnosti komponenty.

  • ResetValue Nastaví hodnotu pro tuto vlastnost komponenty.

  • SetValue Nastaví hodnotu komponenty na jinou hodnotu.

  • ShouldSerializeValue označuje, zda hodnota této vlastnosti je trvalé.

Obvykle abstract členy jsou implementovány prostřednictvím reflexe. Další informace o odraz naleznete v tématech v Reflection.

PoznámkaPoznámka

Atribut HostProtectionAttribute použitý na tento typ nebo člen má následující hodnotu vlastnosti Resources: SharedState. Atribut HostProtectionAttribute nemá vliv na běžné aplikace (které jsou obvykle spouštěny dvojitým kliknutím na ikonu, zadáním příkazu nebo zadáním adresy URL v prohlížeči). Další informace naleznete v třídě HostProtectionAttribute nebo v tématu SQL Server Programming and Host Protection Attributes.

Následující příklad kódu je postavena v příkladu PropertyDescriptorCollection Třída Vytiskne informace (kategorie popis, zobrazované jméno) text tlačítka v textovém poli. Předpokládá, že button1 a textbox1 byla vytvořena ve formuláři.


// Creates a new collection and assign it the properties for button1.
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(button1);

// Sets an PropertyDescriptor to the specific property.
System.ComponentModel.PropertyDescriptor myProperty = properties.Find("Text", false);

// Prints the property and the property description.
textBox1.Text = myProperty.DisplayName+ '\n' ;
textBox1.Text += myProperty.Description + '\n';
textBox1.Text += myProperty.Category + '\n';


Následující příklad kódu ukazuje, jak implementovat vlastní vlastnost popisovače, který poskytuje obal kolem vlastnost jen pro čtení. SerializeReadOnlyPropertyDescriptor Se používá vlastní návrháře poskytnout popisovač vlastnost jen pro čtení pro ovládacího prvku Size vlastnost.


using System;
using System.Collections;
using System.ComponentModel;
using System.Text;

namespace ReadOnlyPropertyDescriptorTest
{
    // The SerializeReadOnlyPropertyDescriptor shows how to implement a 
    // custom property descriptor. It provides a read-only wrapper 
    // around the specified PropertyDescriptor. 
    internal sealed class SerializeReadOnlyPropertyDescriptor : PropertyDescriptor
    {
        private PropertyDescriptor _pd = null;

        public SerializeReadOnlyPropertyDescriptor(PropertyDescriptor pd)
            : base(pd)
        {
            this._pd = pd;
        }

        public override AttributeCollection Attributes
        {
            get
            {
                return( AppendAttributeCollection(
                    this._pd.Attributes, 
                    ReadOnlyAttribute.Yes) );
            }
        }

        protected override void FillAttributes(IList attributeList)
        {
            attributeList.Add(ReadOnlyAttribute.Yes);
        }

        public override Type ComponentType
        {
            get
            {
                return this._pd.ComponentType;
            }
        }


        // The type converter for this property.
        // A translator can overwrite with its own converter.
        public override TypeConverter Converter
        {
            get
            {
                return this._pd.Converter;
            }
        }


        // Returns the property editor 
        // A translator can overwrite with its own editor.
        public override object GetEditor(Type editorBaseType)
        {
            return this._pd.GetEditor(editorBaseType);
        }

        // Specifies the property is read only.
        public override bool IsReadOnly
        {
            get
            {
                return true;
            }
        }

        public override Type PropertyType
        {
            get
            {
                return this._pd.PropertyType;
            }
        }

        public override bool CanResetValue(object component)
        {
            return this._pd.CanResetValue(component);
        }


        public override object GetValue(object component)
        {
            return this._pd.GetValue(component);
        }

        public override void ResetValue(object component)
        {
            this._pd.ResetValue(component);
        }

        public override void SetValue(object component, object val)
        {
            this._pd.SetValue(component, val);
        }

        // Determines whether a value should be serialized.
        public override bool ShouldSerializeValue(object component)
        {
            bool result = this._pd.ShouldSerializeValue(component);

            if (!result)
            {
                DefaultValueAttribute dva = (DefaultValueAttribute)_pd.Attributes[typeof(DefaultValueAttribute)];
                if (dva != null)
                {
                    result = !Object.Equals(this._pd.GetValue(component), dva.Value);
                }
                else
                {
                    result = true;
                }
            }

            return result;
        }

        // The following Utility methods create a new AttributeCollection
        // by appending the specified attributes to an existing collection.
        static public AttributeCollection AppendAttributeCollection(
            AttributeCollection existing, 
            params Attribute[] newAttrs)
        {
            return new AttributeCollection(AppendAttributes(existing, newAttrs));
        }


        static public Attribute[] AppendAttributes(
            AttributeCollection existing, 
            params Attribute[] newAttrs)
        {
            if (existing == null)
            {
                throw new ArgumentNullException("existing");
            }

            if (newAttrs == null)
            {
                newAttrs = new Attribute[0];
            }

            Attribute[] attributes;

            Attribute[] newArray = new Attribute[existing.Count + newAttrs.Length];
            int actualCount = existing.Count;
            existing.CopyTo(newArray, 0);

            for (int idx = 0; idx < newAttrs.Length; idx++)
            {
                if (newAttrs[idx] == null)
                {
                    throw new ArgumentNullException("newAttrs");
                }

                // Check if this attribute is already in the existing
                // array.  If it is, replace it.
                bool match = false;
                for (int existingIdx = 0; existingIdx < existing.Count; existingIdx++)
                {
                    if (newArray[existingIdx].TypeId.Equals(newAttrs[idx].TypeId))
                    {
                        match = true;
                        newArray[existingIdx] = newAttrs[idx];
                        break;
                    }
                }

                if (!match)
                {
                    newArray[actualCount++] = newAttrs[idx];
                }
            }

            // If some attributes were collapsed, create a new array.
            if (actualCount < newArray.Length)
            {
                attributes = new Attribute[actualCount];
                Array.Copy(newArray, 0, attributes, 0, actualCount);
            }
            else
            {
                attributes = newArray;
            }

            return attributes;
        }
    }
}


Kód následující příklady ukazují způsob použití SerializeReadOnlyPropertyDescriptor ve vlastní designer.


using System;
using System.Collections;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms.Design;

namespace ReadOnlyPropertyDescriptorTest
{   
    class DemoControlDesigner : ControlDesigner
    {
        // The PostFilterProperties method replaces the control's 
        // Size property with a read-only Size property by using 
        // the SerializeReadOnlyPropertyDescriptor class.
        protected override void PostFilterProperties(IDictionary properties)
        {
            if (properties.Contains("Size"))
            {
                PropertyDescriptor original = properties["Size"] as PropertyDescriptor;
                SerializeReadOnlyPropertyDescriptor readOnlyDescriptor = 
                    new SerializeReadOnlyPropertyDescriptor(original);

                properties["Size"] = readOnlyDescriptor;
            }

            base.PostFilterProperties(properties);
        }
    }
}


...


using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace ReadOnlyPropertyDescriptorTest
{
    [Designer(typeof(DemoControlDesigner))]
    public class DemoControl : Control
    {
        public DemoControl()
        {

        }
    }
}


.NET Framework

Podporováno v: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Podporováno v: 4, 3.5 SP1

Windows 7, Windows Vista SP1 nebo novější, Windows XP SP3, 64bitová verze systému Windows XP SP2, Windows Server 2008 (není podpora v roli Server Core), Windows Server 2008 R2 (podpora v roli Server Core s aktualizací SP1 nebo novější), Windows Server 2003 SP2

.NET Framework nepodporuje některé verze platforem. Seznam podporovaných verzí naleznete v tématu Požadavky na systém rozhraní .NET framework.
Všechny veřejné členy static (Shared v jazyce Visual Basic) tohoto typu jsou zabezpečeny pro používání podprocesů. Zabezpečení sdílených členů pro používání podprocesů není zaručeno.
Byl tento obsah pro vás užitečný?
(Zbývající počet znaků: 1500)

Obsah vytvořený komunitou

Přidat
© 2013 Microsoft. Všechna práva vyhrazena.