private void EditValueUsingOldEditor(ConfigurationProperty configElement, LinkedElementCollection <Attribute> attributes)
 {
     using (Transaction transaction = configElement.Store.TransactionManager.BeginTransaction("Edit custom attributes"))
     {
         using (AttributesForm attributeForm = new AttributesForm(configElement.Store, attributes))
         {
             if (attributeForm.ShowDialog() == DialogResult.OK && transaction.HasPendingChanges)
             {
                 transaction.Commit();
             }
             else
             {
                 transaction.Rollback();
             }
         }
     }
 }
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            if (provider == null)
            {
                throw new ArgumentNullException("provider");
            }
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            ElementPropertyDescriptor propertyDescriptor = context.PropertyDescriptor as ElementPropertyDescriptor;

            if ((propertyDescriptor != null) && ((propertyDescriptor.ModelElement is ConfigurationProperty)))
            {
                ConfigurationProperty configElement            = propertyDescriptor.ModelElement as ConfigurationProperty;
                LinkedElementCollection <Attribute> attributes = configElement.Attributes;

                using (Transaction transaction = configElement.Store.TransactionManager.BeginTransaction("Edit custom attributes"))
                {
                    using (AttributesForm attributeForm = new AttributesForm(configElement.Store, attributes))
                    {
                        if (attributeForm.ShowDialog() == DialogResult.OK && transaction.HasPendingChanges)
                        {
                            transaction.Commit();
                        }
                        else
                        {
                            transaction.Rollback();
                        }
                    }
                }
            }

            return(value);
        }