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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PeerToPeerException.cs
- SelectManyQueryOperator.cs
- SqlOuterApplyReducer.cs
- ListContractAdapter.cs
- TableLayoutPanelDesigner.cs
- LayoutTable.cs
- ConfigXmlText.cs
- BorderGapMaskConverter.cs
- Int64Animation.cs
- SelectorAutomationPeer.cs
- MethodExpression.cs
- EntityViewGenerationAttribute.cs
- ConfigurationValidatorAttribute.cs
- SystemFonts.cs
- BaseTreeIterator.cs
- ListViewUpdateEventArgs.cs
- DecoderExceptionFallback.cs
- RequiredAttributeAttribute.cs
- AnnouncementClient.cs
- HttpPostedFileWrapper.cs
- RSAProtectedConfigurationProvider.cs
- WindowShowOrOpenTracker.cs
- RtfControlWordInfo.cs
- Vector3DKeyFrameCollection.cs
- SupportsEventValidationAttribute.cs
- EntityConnection.cs
- TextBox.cs
- ThreadAbortException.cs
- HMACSHA1.cs
- DbProviderFactory.cs
- ProfilePropertySettings.cs
- TemplateControlParser.cs
- TypeBuilder.cs
- ApplicationInfo.cs
- ServicePointManagerElement.cs
- StickyNote.cs
- ConfigurationManagerInternalFactory.cs
- XPathNodeHelper.cs
- PauseStoryboard.cs
- JsonStringDataContract.cs
- AmbientValueAttribute.cs
- MessageProtectionOrder.cs
- FacetValueContainer.cs
- PointCollection.cs
- DiscoveryDocumentLinksPattern.cs
- HostedImpersonationContext.cs
- JumpItem.cs
- OrderByExpression.cs
- StackOverflowException.cs
- ArrangedElementCollection.cs
- RSAProtectedConfigurationProvider.cs
- DescendantOverDescendantQuery.cs
- ThrowHelper.cs
- TraceHandler.cs
- ReachPrintTicketSerializer.cs
- tooltip.cs
- DataColumnMappingCollection.cs
- StrokeCollection2.cs
- TypeSchema.cs
- httpapplicationstate.cs
- CompiledRegexRunnerFactory.cs
- ThreadPool.cs
- TableLayout.cs
- LinearGradientBrush.cs
- BCLDebug.cs
- FormatterConverter.cs
- TokenBasedSetEnumerator.cs
- GPPOINTF.cs
- XmlLoader.cs
- ISAPIWorkerRequest.cs
- TemplateBamlTreeBuilder.cs
- DataListItem.cs
- BaseValidator.cs
- Manipulation.cs
- FixedSOMPage.cs
- AutoScrollExpandMessageFilter.cs
- BigInt.cs
- CopyNamespacesAction.cs
- EntryPointNotFoundException.cs
- XmlQueryRuntime.cs
- SourceSwitch.cs
- Tracer.cs
- MetafileHeader.cs
- CqlLexerHelpers.cs
- CqlIdentifiers.cs
- Boolean.cs
- PropertyInfo.cs
- XmlIlTypeHelper.cs
- FormsAuthentication.cs
- ContextMenuStripGroup.cs
- DataPagerFieldItem.cs
- MarginsConverter.cs
- XmlSchemaAnnotated.cs
- ElementProxy.cs
- ListInitExpression.cs
- StoreContentChangedEventArgs.cs
- InputMethodStateChangeEventArgs.cs
- KeyNotFoundException.cs
- UpDownEvent.cs
- _SslSessionsCache.cs