Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / TableLayoutPanelCodeDomSerializer.cs / 1 / TableLayoutPanelCodeDomSerializer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ [assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.Design.TableLayoutPanelCodeDomSerializer..ctor()")] namespace System.Windows.Forms.Design { using System; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Windows.Forms; using System.ComponentModel.Design.Serialization; ////// Custom serializer for the TableLayoutPanel. We need this so we can push the TableLayoutSettings object /// into the resx in localization mode. This is used by loc tools like WinRes to correctly setup the /// TableLayoutPanel with all its settings. Note that we don't serialize code to access the settings. /// internal class TableLayoutPanelCodeDomSerializer : CodeDomSerializer { private static readonly string LayoutSettingsPropName = "LayoutSettings"; public override object Deserialize(IDesignerSerializationManager manager, object codeObject) { return GetBaseSerializer(manager).Deserialize(manager, codeObject); } private CodeDomSerializer GetBaseSerializer(IDesignerSerializationManager manager) { return (CodeDomSerializer)manager.GetSerializer(typeof(TableLayoutPanel).BaseType, typeof(CodeDomSerializer)); } ////// We don't actually want to serialize any code here, so we just delegate that to the base type's /// serializer. All we want to do is if we are in a localizable form, we want to push a /// 'LayoutSettings' entry into the resx. /// public override object Serialize(IDesignerSerializationManager manager, object value) { // First call the base serializer to serialize the object. object codeObject = GetBaseSerializer(manager).Serialize(manager, value); // Now push our layout settings stuff into the resx if we are not inherited read only and // are in a localizable Form. TableLayoutPanel tlp = value as TableLayoutPanel; Debug.Assert(tlp != null, "Huh? We were expecting to be serializing a TableLayoutPanel here."); if (tlp != null) { InheritanceAttribute ia = (InheritanceAttribute)TypeDescriptor.GetAttributes(tlp)[typeof(InheritanceAttribute)]; if (ia == null || ia.InheritanceLevel != InheritanceLevel.InheritedReadOnly) { IDesignerHost host = (IDesignerHost)manager.GetService(typeof(IDesignerHost)); if (IsLocalizable(host)) { PropertyDescriptor lsProp = TypeDescriptor.GetProperties(tlp)[LayoutSettingsPropName]; object val = (lsProp != null) ? lsProp.GetValue(tlp) : null; if (val != null) { string key = manager.GetName(tlp) + "." + LayoutSettingsPropName; SerializeResourceInvariant(manager, key, val); } } } } return codeObject; } private bool IsLocalizable(IDesignerHost host) { if (host != null) { PropertyDescriptor prop = TypeDescriptor.GetProperties(host.RootComponent)["Localizable"]; if (prop != null && prop.PropertyType == typeof(bool)) { return (bool) prop.GetValue(host.RootComponent); } } return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DynamicValueConverter.cs
- NGCUIElementCollectionSerializerAsync.cs
- CompilationUtil.cs
- HttpProfileBase.cs
- TagPrefixAttribute.cs
- PointCollection.cs
- XmlSigningNodeWriter.cs
- ExtensionDataObject.cs
- DateTimeHelper.cs
- FontEmbeddingManager.cs
- PixelFormat.cs
- EntityStoreSchemaGenerator.cs
- TimeEnumHelper.cs
- DesignerListAdapter.cs
- TextEncodedRawTextWriter.cs
- PixelFormats.cs
- AutomationAttributeInfo.cs
- Crc32Helper.cs
- _emptywebproxy.cs
- GACMembershipCondition.cs
- AbsoluteQuery.cs
- IntSecurity.cs
- UniqueSet.cs
- ArglessEventHandlerProxy.cs
- WebPartMenu.cs
- EmptyElement.cs
- DataServiceQueryOfT.cs
- ClassGenerator.cs
- PingReply.cs
- TdsParserStateObject.cs
- ProfileGroupSettingsCollection.cs
- BrowserCapabilitiesFactoryBase.cs
- XPathPatternParser.cs
- XpsLiterals.cs
- PropertyTabChangedEvent.cs
- InputLanguageManager.cs
- MethodCallConverter.cs
- WebPartZoneCollection.cs
- WebPartConnectionsConfigureVerb.cs
- ComponentCommands.cs
- HtmlAnchor.cs
- DisableDpiAwarenessAttribute.cs
- WebPartMovingEventArgs.cs
- DataTableReaderListener.cs
- ProfileModule.cs
- ListViewInsertEventArgs.cs
- SystemIPAddressInformation.cs
- ImageBrush.cs
- TrackingStringDictionary.cs
- NavigationPropertyAccessor.cs
- Ipv6Element.cs
- Lazy.cs
- TrackingParticipant.cs
- DocumentOrderQuery.cs
- SerializationObjectManager.cs
- WebPartEditorCancelVerb.cs
- CurrentTimeZone.cs
- BrowserTree.cs
- ThreadStateException.cs
- WizardDesigner.cs
- InstallerTypeAttribute.cs
- DoubleLinkList.cs
- EventProperty.cs
- EntityPropertyMappingAttribute.cs
- TrackingValidationObjectDictionary.cs
- HotSpotCollection.cs
- SignatureConfirmationElement.cs
- hresults.cs
- XmlArrayItemAttribute.cs
- PropertyRef.cs
- DesignerAttribute.cs
- EmptyControlCollection.cs
- IndentedWriter.cs
- WindowsContainer.cs
- ValidationEventArgs.cs
- PageEventArgs.cs
- ReversePositionQuery.cs
- CodeSnippetTypeMember.cs
- DataGridAddNewRow.cs
- WinOEToolBoxItem.cs
- DbParameterHelper.cs
- PagedDataSource.cs
- FrameworkElementFactoryMarkupObject.cs
- DataBoundControlHelper.cs
- OpacityConverter.cs
- TextEditorMouse.cs
- FocusChangedEventArgs.cs
- Util.cs
- MatrixConverter.cs
- XmlSchemaParticle.cs
- GenericNameHandler.cs
- ValueCollectionParameterReader.cs
- MasterPageBuildProvider.cs
- IntSecurity.cs
- Icon.cs
- ObjectTypeMapping.cs
- SQLInt16Storage.cs
- DateTimeConstantAttribute.cs
- ContentPlaceHolderDesigner.cs
- BuildManager.cs