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
- EventMap.cs
- RowToFieldTransformer.cs
- ConfigXmlComment.cs
- PanelStyle.cs
- ComPersistableTypeElement.cs
- ResXResourceSet.cs
- ExpressionConverter.cs
- XmlObjectSerializerReadContext.cs
- GeometryHitTestParameters.cs
- SqlEnums.cs
- FullTextBreakpoint.cs
- Italic.cs
- Message.cs
- DictionarySectionHandler.cs
- WebPartZoneCollection.cs
- CodeCommentStatementCollection.cs
- ConfigurationSchemaErrors.cs
- IntranetCredentialPolicy.cs
- MenuCommand.cs
- SqlClientWrapperSmiStream.cs
- ObjectQueryProvider.cs
- PlainXmlSerializer.cs
- HelloMessageCD1.cs
- WebServiceReceive.cs
- SapiRecoInterop.cs
- InkCanvasAutomationPeer.cs
- XmlSortKeyAccumulator.cs
- NeutralResourcesLanguageAttribute.cs
- NavigateEvent.cs
- HMACSHA256.cs
- XD.cs
- PropertyConverter.cs
- GenericTextProperties.cs
- ExpressionBinding.cs
- PreviewPrintController.cs
- DbExpressionVisitor_TResultType.cs
- XmlRawWriterWrapper.cs
- DebugView.cs
- Int64.cs
- ProviderMetadata.cs
- XpsManager.cs
- XsdCachingReader.cs
- LoginAutoFormat.cs
- cookieexception.cs
- TextRangeSerialization.cs
- Slider.cs
- BinaryObjectWriter.cs
- ColorContextHelper.cs
- MenuItemBindingCollection.cs
- TreeViewHitTestInfo.cs
- DefaultHttpHandler.cs
- FileDialog_Vista.cs
- ResXResourceWriter.cs
- MobileControlBuilder.cs
- ComponentSerializationService.cs
- ConfigurationProperty.cs
- HtmlShimManager.cs
- SkewTransform.cs
- BamlRecordReader.cs
- VectorAnimationBase.cs
- TheQuery.cs
- ImageCodecInfo.cs
- DesignerProperties.cs
- PingReply.cs
- OperatingSystem.cs
- UnsafeNativeMethods.cs
- DefaultConfirmation.cs
- PageAction.cs
- SHA1Managed.cs
- UnitySerializationHolder.cs
- XPathNodeInfoAtom.cs
- XmlQualifiedName.cs
- embossbitmapeffect.cs
- PageRequestManager.cs
- WebResponse.cs
- NativeMethods.cs
- RawUIStateInputReport.cs
- RuleElement.cs
- ModelItemDictionaryImpl.cs
- Avt.cs
- ColorDialog.cs
- XmlComplianceUtil.cs
- PermissionRequestEvidence.cs
- EllipticalNodeOperations.cs
- Stack.cs
- LayoutSettings.cs
- SessionIDManager.cs
- LateBoundBitmapDecoder.cs
- ScopelessEnumAttribute.cs
- LocatorGroup.cs
- RouteUrlExpressionBuilder.cs
- InplaceBitmapMetadataWriter.cs
- CodeExpressionCollection.cs
- OdbcEnvironmentHandle.cs
- PermissionAttributes.cs
- DataGridViewCellLinkedList.cs
- ActivationArguments.cs
- Label.cs
- BitmapFrameEncode.cs
- ExtenderProviderService.cs