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
- PowerModeChangedEventArgs.cs
- DataMemberListEditor.cs
- BrowserCapabilitiesCompiler.cs
- PrintingPermissionAttribute.cs
- NameTable.cs
- DiffuseMaterial.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- XmlDataSourceDesigner.cs
- cookiecontainer.cs
- DataGridPagerStyle.cs
- ColorAnimation.cs
- nulltextcontainer.cs
- TryLoadRunnableWorkflowCommand.cs
- ReflectionTypeLoadException.cs
- ParserOptions.cs
- DesignerTextWriter.cs
- FrameworkContextData.cs
- Choices.cs
- _ListenerAsyncResult.cs
- FtpWebRequest.cs
- MimeFormatExtensions.cs
- oledbmetadatacollectionnames.cs
- Wildcard.cs
- DetailsViewCommandEventArgs.cs
- InlinedAggregationOperatorEnumerator.cs
- RemoveStoryboard.cs
- SrgsElementList.cs
- PresentationSource.cs
- DataGridViewBand.cs
- ItemMap.cs
- PackWebResponse.cs
- UriScheme.cs
- DynamicMetaObjectBinder.cs
- WebEventCodes.cs
- webclient.cs
- SecUtil.cs
- CanonicalXml.cs
- Nullable.cs
- MaterialCollection.cs
- HttpPostedFile.cs
- OdbcConnectionHandle.cs
- Line.cs
- safelink.cs
- OdbcDataAdapter.cs
- Transform3D.cs
- AsymmetricKeyExchangeDeformatter.cs
- SortDescription.cs
- RemoveStoryboard.cs
- IntranetCredentialPolicy.cs
- AppSettingsSection.cs
- ObjectReferenceStack.cs
- RuleConditionDialog.Designer.cs
- RijndaelManagedTransform.cs
- DBConnectionString.cs
- TransactionContextValidator.cs
- FileDialog_Vista_Interop.cs
- DesignerFrame.cs
- CodeAttributeDeclaration.cs
- ValuePatternIdentifiers.cs
- GeometryGroup.cs
- TypePresenter.xaml.cs
- Validator.cs
- DataBoundControlAdapter.cs
- HMACMD5.cs
- DataGridParentRows.cs
- OperatingSystem.cs
- Vector3DAnimationUsingKeyFrames.cs
- MarkupCompiler.cs
- Matrix.cs
- FreezableDefaultValueFactory.cs
- SamlEvidence.cs
- Rect3D.cs
- Merger.cs
- FileDialogCustomPlacesCollection.cs
- SQLRoleProvider.cs
- EDesignUtil.cs
- DataSourceHelper.cs
- MobilePage.cs
- FieldAccessException.cs
- DesignConnectionCollection.cs
- DrawingImage.cs
- CodeSnippetTypeMember.cs
- CompositeCollection.cs
- DiscardableAttribute.cs
- ObjectDataSourceDisposingEventArgs.cs
- StringComparer.cs
- SettingsPropertyCollection.cs
- DataGridToolTip.cs
- RuntimeArgumentHandle.cs
- RotationValidation.cs
- VirtualStackFrame.cs
- DocobjHost.cs
- ViewKeyConstraint.cs
- FloaterParaClient.cs
- ConfigurationSectionGroup.cs
- ToolboxItemWrapper.cs
- SafeCryptContextHandle.cs
- AtomServiceDocumentSerializer.cs
- WebControlsSection.cs
- BinaryParser.cs