public PropertyGridMember IncludeMember(string memberToInclude, Type type, MemberChangeEventHandler memberChangeAction, Func <object> getMember, TypeConverter converter = null, Attribute[] attributes = null) { if (mNativePropertyGridMembers.ContainsMember(memberToInclude)) { mNativePropertyGridMembers.RemoveMember(memberToInclude); } PropertyGridMember pgm = new PropertyGridMember(); pgm.MemberChange = memberChangeAction; pgm.CustomGetMember = getMember; pgm.Name = memberToInclude; pgm.Type = type; pgm.TypeConverter = converter; pgm.Attributes.Clear(); if (attributes != null) { pgm.Attributes.AddRange(attributes); } if (getMember != null && memberChangeAction == null) { pgm.IsReadOnly = true; pgm.Attributes.Add(new ReadOnlyAttribute(true)); } mCustomPropertyGridMembers.Add(pgm); return(pgm); }
public PropertyDescriptorCollection AddProperty(PropertyDescriptorCollection pdc, string propertyName, Type propertyType, TypeConverter converter, Attribute[] attributes, MemberChangeEventHandler eventArgs, Func <object> getMember) { List <PropertyDescriptor> properties = new List <PropertyDescriptor>(pdc.Count); for (int i = 0; i < pdc.Count; i++) { PropertyDescriptor pd = pdc[i]; if (pd.Name != propertyName) { properties.Add(pd); } } // If it doesn't have // events for getting and // setting the value, then // the variable is part of the // type itself. Objects can't have // fields/properties with spaces in them // so this is an invalid property. The name // is either wrong or the user should have passed // in get and set methods. if (propertyName.Contains(' ') && (getMember == null || eventArgs == null)) { throw new ArgumentException("The member cannot have spaces in the name if it doesn't have getters and setters explicitly set"); } ReflectingParameterDescriptor epd = new ReflectingParameterDescriptor(propertyName, attributes); epd.SetComponentType(propertyType); epd.Instance = CurrentInstance; epd.MemberChangeEvent = eventArgs; epd.CustomGetMember = getMember; epd.TypeConverter = converter; properties.Add(epd); //PropertyDescriptor propertyDescriptor; return(new PropertyDescriptorCollection(properties.ToArray())); }
public static PropertyDescriptorCollection AddProperty(PropertyDescriptorCollection pdc, string propertyName, Type propertyType, TypeConverter converter, Attribute[] attributes, MemberChangeEventHandler eventArgs, Func<object> getMember) { List<PropertyDescriptor> properties = new List<PropertyDescriptor>(pdc.Count); for (int i = 0; i < pdc.Count; i++) { PropertyDescriptor pd = pdc[i]; if (pd.Name != propertyName) { properties.Add(pd); } } // If it doesn't have // events for getting and // setting the value, then // the variable is part of the // type itself. Objects can't have // fields/properties with spaces in them // so this is an invalid property. The name // is either wrong or the user should have passed // in get and set methods. if (propertyName.Contains(' ') && (getMember == null || eventArgs == null)) { throw new ArgumentException("The member cannot have spaces in the name if it doesn't have getters and setters explicitly set"); } ReflectingParameterDescriptor epd = new ReflectingParameterDescriptor(propertyName, attributes); epd.SetComponentType(propertyType); epd.Instance = CurrentInstance; epd.MemberChangeEvent = eventArgs as MemberChangeEventHandler; epd.CustomGetMember = getMember; epd.TypeConverter = converter; properties.Add(epd); //PropertyDescriptor propertyDescriptor; return new PropertyDescriptorCollection(properties.ToArray()); }
public PropertyGridMember IncludeMember(string memberToInclude, Type type, MemberChangeEventHandler memberChangeAction, Func<object> getMember, TypeConverter converter = null, Attribute[] attributes = null) { if (mNativePropertyGridMembers.ContainsMember(memberToInclude)) { mNativePropertyGridMembers.RemoveMember(memberToInclude); } PropertyGridMember pgm = new PropertyGridMember(); pgm.MemberChange = memberChangeAction; pgm.CustomGetMember = getMember; pgm.Name = memberToInclude; pgm.Type = type; pgm.TypeConverter = converter; pgm.Attributes.Clear(); if (attributes != null) { pgm.Attributes.AddRange(attributes); } if (getMember != null && memberChangeAction == null) { pgm.IsReadOnly = true; pgm.Attributes.Add(new ReadOnlyAttribute(true)); } mCustomPropertyGridMembers.Add(pgm); return pgm; }