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
- SourceFilter.cs
- FormClosedEvent.cs
- SqlDependencyUtils.cs
- EventsTab.cs
- RadioButtonList.cs
- EventMappingSettings.cs
- DesignTimeParseData.cs
- GridViewSelectEventArgs.cs
- SpecialFolderEnumConverter.cs
- StateManagedCollection.cs
- ExpressionLink.cs
- GeometryValueSerializer.cs
- DataGridViewSelectedColumnCollection.cs
- XmlSignatureProperties.cs
- DesignTimeType.cs
- X509PeerCertificateAuthentication.cs
- ResXResourceReader.cs
- DataViewManagerListItemTypeDescriptor.cs
- HyperlinkAutomationPeer.cs
- unsafenativemethodstextservices.cs
- FixedSOMTableCell.cs
- WebPartCatalogCloseVerb.cs
- PasswordBoxAutomationPeer.cs
- BamlLocalizabilityResolver.cs
- DataGridViewColumnTypeEditor.cs
- HitTestResult.cs
- Int16.cs
- InvokeBase.cs
- PersistenceProvider.cs
- HttpMethodAttribute.cs
- StrongName.cs
- InvariantComparer.cs
- NativeMethodsCLR.cs
- DesignerSerializerAttribute.cs
- DiagnosticsConfiguration.cs
- _SSPISessionCache.cs
- SoapHeaderAttribute.cs
- SharedRuntimeState.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- LogExtentCollection.cs
- FormsAuthenticationModule.cs
- MenuItemStyleCollectionEditor.cs
- Blend.cs
- MonikerSyntaxException.cs
- OrthographicCamera.cs
- UserNamePasswordValidator.cs
- CompressionTransform.cs
- SHA512.cs
- LineSegment.cs
- Application.cs
- InternalsVisibleToAttribute.cs
- WindowsGraphicsWrapper.cs
- FollowerQueueCreator.cs
- SHA256.cs
- ViewManager.cs
- ApplicationActivator.cs
- EventItfInfo.cs
- Util.cs
- CustomBinding.cs
- UrlMappingCollection.cs
- SrgsGrammar.cs
- Compilation.cs
- Scene3D.cs
- IgnoreSectionHandler.cs
- HttpPostProtocolReflector.cs
- AssemblyHelper.cs
- TableLayoutPanelCellPosition.cs
- X509InitiatorCertificateClientElement.cs
- UniqueIdentifierService.cs
- ObjectSet.cs
- XmlText.cs
- ThreadStaticAttribute.cs
- ConnectionsZone.cs
- Publisher.cs
- TableItemPattern.cs
- UnaryOperationBinder.cs
- UidPropertyAttribute.cs
- StylusEventArgs.cs
- ThicknessKeyFrameCollection.cs
- LiteralDesigner.cs
- LinkedResource.cs
- PtsPage.cs
- CopyOfAction.cs
- IODescriptionAttribute.cs
- Size3D.cs
- HtmlDocument.cs
- RuntimeResourceSet.cs
- MasterPage.cs
- ListBoxAutomationPeer.cs
- MustUnderstandBehavior.cs
- FontWeightConverter.cs
- RegexWriter.cs
- BufferedMessageWriter.cs
- WebControl.cs
- DataGridViewButtonColumn.cs
- OperationExecutionFault.cs
- WebPartTransformerCollection.cs
- PageWrapper.cs
- storepermissionattribute.cs
- TableItemStyle.cs