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
- StackSpiller.Generated.cs
- HostSecurityManager.cs
- ComplexLine.cs
- AppDomainUnloadedException.cs
- BlurBitmapEffect.cs
- COM2ExtendedBrowsingHandler.cs
- MachineKeySection.cs
- FeatureSupport.cs
- DataGridTextBoxColumn.cs
- AppDomainShutdownMonitor.cs
- BindingListCollectionView.cs
- FileEnumerator.cs
- NominalTypeEliminator.cs
- connectionpool.cs
- PersonalizationProviderHelper.cs
- EdgeModeValidation.cs
- TemplatePropertyEntry.cs
- OverlappedAsyncResult.cs
- DisableDpiAwarenessAttribute.cs
- AtomContentProperty.cs
- ActivityPreviewDesigner.cs
- XmlFormatExtensionPrefixAttribute.cs
- PackageRelationship.cs
- UserMapPath.cs
- EntityDescriptor.cs
- PassportPrincipal.cs
- ObjectManager.cs
- FrameworkPropertyMetadata.cs
- HttpResponseInternalWrapper.cs
- MetadataArtifactLoader.cs
- DropShadowBitmapEffect.cs
- XmlMapping.cs
- ShutDownListener.cs
- SettingsBase.cs
- SqlErrorCollection.cs
- Base64Stream.cs
- TextBoxAutomationPeer.cs
- Permission.cs
- FixedSOMFixedBlock.cs
- RadioButtonStandardAdapter.cs
- NativeMethods.cs
- SqlMethods.cs
- ImageBrush.cs
- LockingPersistenceProvider.cs
- MarshalByValueComponent.cs
- ResourceCategoryAttribute.cs
- DeviceContext.cs
- InertiaRotationBehavior.cs
- DataComponentGenerator.cs
- SchemaReference.cs
- XmlDomTextWriter.cs
- ThrowHelper.cs
- ObjectViewFactory.cs
- ReturnEventArgs.cs
- MimeTypeAttribute.cs
- HttpVersion.cs
- IPAddressCollection.cs
- TreeNodeBindingCollection.cs
- SqlCommand.cs
- RegexWriter.cs
- FastEncoderStatics.cs
- DataControlReference.cs
- ProcessingInstructionAction.cs
- AlternateViewCollection.cs
- ChannelManagerService.cs
- ElementNotEnabledException.cs
- NodeFunctions.cs
- IdentityReference.cs
- StateWorkerRequest.cs
- DataService.cs
- CallbackBehaviorAttribute.cs
- GeneralTransform2DTo3DTo2D.cs
- OleDbMetaDataFactory.cs
- ReaderContextStackData.cs
- InitializeCorrelation.cs
- LabelEditEvent.cs
- RadioButtonPopupAdapter.cs
- BrowserCapabilitiesFactoryBase.cs
- QueryCacheEntry.cs
- SingleStorage.cs
- ControlBuilder.cs
- HashHelper.cs
- OrderPreservingMergeHelper.cs
- WebPageTraceListener.cs
- AcceptorSessionSymmetricMessageSecurityProtocol.cs
- CharacterMetrics.cs
- MenuItemCollection.cs
- Version.cs
- BamlResourceSerializer.cs
- SubMenuStyleCollection.cs
- WindowsRegion.cs
- ButtonColumn.cs
- DBNull.cs
- SpecialFolderEnumConverter.cs
- StackBuilderSink.cs
- ConnectionPoint.cs
- TransactionState.cs
- InterleavedZipPartStream.cs
- WebPartUtil.cs
- XmlEntityReference.cs