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
- VariableReference.cs
- StylusCaptureWithinProperty.cs
- WebPageTraceListener.cs
- URIFormatException.cs
- ObfuscateAssemblyAttribute.cs
- XmlSchemaAppInfo.cs
- DefaultValueAttribute.cs
- AuthenticationModulesSection.cs
- SqlInternalConnectionSmi.cs
- ReferentialConstraint.cs
- ClaimComparer.cs
- BinaryWriter.cs
- ClientSession.cs
- ConfigurationCollectionAttribute.cs
- xmlNames.cs
- parserscommon.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- MethodCallConverter.cs
- PriorityBindingExpression.cs
- XmlSchemaSimpleTypeList.cs
- TagPrefixCollection.cs
- DataGridPagingPage.cs
- DataObjectMethodAttribute.cs
- GeometryGroup.cs
- GlobalProxySelection.cs
- RightsManagementInformation.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- Line.cs
- RequestNavigateEventArgs.cs
- CodeDomSerializationProvider.cs
- UnaryOperationBinder.cs
- XamlStackWriter.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- SqlNotificationRequest.cs
- DesignerObjectListAdapter.cs
- AsyncCallback.cs
- MenuItemStyleCollection.cs
- ToolStripItemTextRenderEventArgs.cs
- TransformerInfo.cs
- SectionXmlInfo.cs
- TypeUtil.cs
- Int64AnimationUsingKeyFrames.cs
- CodeMethodInvokeExpression.cs
- LostFocusEventManager.cs
- SelectionItemProviderWrapper.cs
- Effect.cs
- XmlReaderSettings.cs
- Bits.cs
- Label.cs
- ShortcutKeysEditor.cs
- DataGridViewColumnCollection.cs
- VarRefManager.cs
- NamespaceTable.cs
- HttpCookieCollection.cs
- AutoGeneratedField.cs
- cookie.cs
- FullTextBreakpoint.cs
- ComponentChangedEvent.cs
- ToolStripSplitStackLayout.cs
- LocalizationParserHooks.cs
- TrackingRecord.cs
- MailMessageEventArgs.cs
- DictionarySectionHandler.cs
- WebPartConnectionsCancelEventArgs.cs
- ExecutionContext.cs
- DataGridCommandEventArgs.cs
- PKCS1MaskGenerationMethod.cs
- WebPartMovingEventArgs.cs
- OutputCacheModule.cs
- ToolStripOverflowButton.cs
- SmiContextFactory.cs
- Literal.cs
- InputManager.cs
- UriExt.cs
- PerfCounters.cs
- COM2FontConverter.cs
- SynchronizedMessageSource.cs
- ExeContext.cs
- ResourceManagerWrapper.cs
- InvokeHandlers.cs
- ProjectionCamera.cs
- DockPanel.cs
- AsyncStreamReader.cs
- OleDbMetaDataFactory.cs
- precedingsibling.cs
- TableHeaderCell.cs
- AnnotationMap.cs
- TemplateBindingExpression.cs
- DelegateHelpers.cs
- GroupQuery.cs
- RealProxy.cs
- DynamicUpdateCommand.cs
- HtmlHistory.cs
- HMACSHA384.cs
- EventInfo.cs
- TextContainerChangedEventArgs.cs
- MethodImplAttribute.cs
- DataObjectMethodAttribute.cs
- UnauthorizedAccessException.cs
- StandardOleMarshalObject.cs