Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / PropertyGridInternal / ImmutablePropertyDescriptorGridEntry.cs / 1305376 / ImmutablePropertyDescriptorGridEntry.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms.PropertyGridInternal { using System.Runtime.Serialization.Formatters; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System; using System.Collections; using System.Reflection; using System.ComponentModel; using System.ComponentModel.Design; using System.Windows.Forms; using System.Windows.Forms.Design; using System.Drawing; using System.Drawing.Design; using Microsoft.Win32; // This grid entry is used for immutable objects. An immutable object is identified // through it's TypeConverter, which returns TRUE to ShouldCreateInstance. For this case, // we never go through the property descriptor to change the value, but recreate each // time. // internal class ImmutablePropertyDescriptorGridEntry : PropertyDescriptorGridEntry { internal ImmutablePropertyDescriptorGridEntry(PropertyGrid ownerGrid, GridEntry peParent, PropertyDescriptor propInfo, bool hide) : base(ownerGrid, peParent, propInfo, hide) { } protected override bool IsPropertyReadOnly { get { return ShouldRenderReadOnly; } } public override object PropertyValue { get { return base.PropertyValue; } [SuppressMessage("Microsoft.Security", "CA2102:CatchNonClsCompliantExceptionsInGeneralHandlers")] set { // Create a new instance of the value and set it into the parent grid entry. // object owner = GetValueOwner(); GridEntry parentEntry = InstanceParentGridEntry; TypeConverter parentConverter = parentEntry.TypeConverter; PropertyDescriptorCollection props = parentConverter.GetProperties(parentEntry, owner); IDictionary values = new Hashtable(props.Count); object newObject = null; for (int i = 0; i < props.Count; i++) { if (propertyInfo.Name != null && propertyInfo.Name.Equals(props[i].Name)) { values[props[i].Name] = value; } else { values[props[i].Name] = props[i].GetValue(owner); } } try { newObject = parentConverter.CreateInstance(parentEntry, values); } catch (Exception e) { if (string.IsNullOrEmpty(e.Message)) { throw new TargetInvocationException(SR.GetString(SR.ExceptionCreatingObject, InstanceParentGridEntry.PropertyType.FullName, e.ToString()), e); } else throw; // rethrow the same exception } if (newObject != null) { parentEntry.PropertyValue = newObject; } } } internal override bool NotifyValueGivenParent(object obj, int type) { return ParentGridEntry.NotifyValue(type); } public override bool ShouldRenderReadOnly { get { return InstanceParentGridEntry.ShouldRenderReadOnly; } } private GridEntry InstanceParentGridEntry { get { GridEntry parent = this.ParentGridEntry; if (parent is CategoryGridEntry) { parent = parent.ParentGridEntry; } return parent; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextTreeObjectNode.cs
- ErrorStyle.cs
- ConnectionManagementSection.cs
- SynchronizationLockException.cs
- CommandID.cs
- RenderDataDrawingContext.cs
- SoapSchemaImporter.cs
- SamlAssertionKeyIdentifierClause.cs
- StorageEndPropertyMapping.cs
- TransactionScopeDesigner.cs
- StrongNameIdentityPermission.cs
- ArraySegment.cs
- UpdateManifestForBrowserApplication.cs
- DataRowChangeEvent.cs
- OperationResponse.cs
- BamlMapTable.cs
- HttpsHostedTransportConfiguration.cs
- OperationValidationEventArgs.cs
- PagedControl.cs
- AlternateViewCollection.cs
- WhitespaceRule.cs
- EntityDataSourceMemberPath.cs
- HtmlValidatorAdapter.cs
- IndependentlyAnimatedPropertyMetadata.cs
- OracleBinary.cs
- WindowPattern.cs
- EdmProperty.cs
- WebControlAdapter.cs
- BCryptNative.cs
- MutexSecurity.cs
- FontResourceCache.cs
- Vector3DAnimationBase.cs
- NativeActivityContext.cs
- LicenseProviderAttribute.cs
- WindowsListViewItem.cs
- ErrorHandler.cs
- WinFormsUtils.cs
- DataReaderContainer.cs
- HttpWriter.cs
- RoleServiceManager.cs
- TraceXPathNavigator.cs
- RichTextBoxConstants.cs
- MeshGeometry3D.cs
- IsolatedStorageException.cs
- TemplateControlCodeDomTreeGenerator.cs
- OperationPerformanceCounters.cs
- SqlDataSourceConnectionPanel.cs
- BindingSource.cs
- FtpWebResponse.cs
- SoapServerMethod.cs
- LinqMaximalSubtreeNominator.cs
- PartitionedStreamMerger.cs
- __Error.cs
- ModelChangedEventArgsImpl.cs
- Semaphore.cs
- Scripts.cs
- Compensate.cs
- SimplePropertyEntry.cs
- XmlReader.cs
- MexNamedPipeBindingElement.cs
- EventWaitHandleSecurity.cs
- SafeHandles.cs
- SqlGenericUtil.cs
- DataSourceIDConverter.cs
- EntityStoreSchemaFilterEntry.cs
- WebPartActionVerb.cs
- MethodRental.cs
- ComponentCollection.cs
- CompilationUtil.cs
- SecUtil.cs
- ContextStack.cs
- SqlClientPermission.cs
- ThaiBuddhistCalendar.cs
- RecommendedAsConfigurableAttribute.cs
- Line.cs
- StyleSelector.cs
- WinFormsSecurity.cs
- CommentGlyph.cs
- ServiceAuthorizationManager.cs
- TypeForwardedToAttribute.cs
- UInt64Converter.cs
- DataGridDesigner.cs
- GeometryCollection.cs
- DataSourceBooleanViewSchemaConverter.cs
- AmbientProperties.cs
- SQLBytesStorage.cs
- MetadataSource.cs
- StringResourceManager.cs
- QuaternionAnimation.cs
- Package.cs
- Journal.cs
- TreeNodeStyleCollection.cs
- HtmlTableCellCollection.cs
- Bits.cs
- PtsHelper.cs
- ProjectionCamera.cs
- ManipulationPivot.cs
- Splitter.cs
- TimeEnumHelper.cs
- ResourceDescriptionAttribute.cs