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
- EDesignUtil.cs
- LassoHelper.cs
- Vector3D.cs
- XmlSchemaComplexType.cs
- ValidationException.cs
- WsatConfiguration.cs
- KeySpline.cs
- CompiledXpathExpr.cs
- ChildChangedEventArgs.cs
- AlphaSortedEnumConverter.cs
- CompareInfo.cs
- XmlNamespaceMapping.cs
- CharEnumerator.cs
- EditorAttributeInfo.cs
- CopyOnWriteList.cs
- XmlSchemaValidator.cs
- Point4DConverter.cs
- MemoryMappedView.cs
- ColorBlend.cs
- SQLDouble.cs
- Compensation.cs
- DateTimeConstantAttribute.cs
- ExpressionBindings.cs
- ProtocolsInstallComponent.cs
- GridView.cs
- XamlVector3DCollectionSerializer.cs
- X509Chain.cs
- Lease.cs
- XmlArrayItemAttributes.cs
- SQLSingle.cs
- EncodingDataItem.cs
- XmlSchemaValidationException.cs
- HighContrastHelper.cs
- Operand.cs
- Stopwatch.cs
- _AutoWebProxyScriptHelper.cs
- Accessible.cs
- PropertyPathWorker.cs
- HtmlMeta.cs
- ScriptServiceAttribute.cs
- ApplicationManager.cs
- ZoneMembershipCondition.cs
- ValidationErrorCollection.cs
- CodeExporter.cs
- UrlMappingsSection.cs
- StatusBarDrawItemEvent.cs
- ConnectionPoolManager.cs
- SignedXml.cs
- ConfigurationErrorsException.cs
- VirtualPath.cs
- DeclaredTypeElement.cs
- MessageHeaderException.cs
- DataRowExtensions.cs
- UnsafeNativeMethods.cs
- ProxyElement.cs
- X509SecurityTokenAuthenticator.cs
- SystemInformation.cs
- EnumType.cs
- XmlAutoDetectWriter.cs
- MruCache.cs
- MonitorWrapper.cs
- NetworkStream.cs
- ClosableStream.cs
- _NegotiateClient.cs
- OleDbParameter.cs
- IpcPort.cs
- safelink.cs
- TextEditorLists.cs
- unsafenativemethodsother.cs
- ContentFilePart.cs
- GPStream.cs
- SafeArrayRankMismatchException.cs
- FindCriteria11.cs
- PrimitiveXmlSerializers.cs
- ContextStaticAttribute.cs
- Line.cs
- PrintEvent.cs
- PropertyMetadata.cs
- SafeEventLogWriteHandle.cs
- DBConcurrencyException.cs
- DBBindings.cs
- PageBreakRecord.cs
- TableLayoutSettings.cs
- XmlIncludeAttribute.cs
- TreeChangeInfo.cs
- BindingCollection.cs
- UIElementAutomationPeer.cs
- SizeF.cs
- MessageHeaderAttribute.cs
- XmlnsCache.cs
- odbcmetadatafactory.cs
- BamlBinaryWriter.cs
- IncrementalReadDecoders.cs
- ThreadStaticAttribute.cs
- ToolStripLocationCancelEventArgs.cs
- _ListenerAsyncResult.cs
- WindowsListViewItemCheckBox.cs
- ResolveNameEventArgs.cs
- TypeInitializationException.cs
- VirtualDirectoryMappingCollection.cs