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
- Size.cs
- SortedList.cs
- Content.cs
- StateItem.cs
- URLAttribute.cs
- DbParameterCollection.cs
- StrokeCollection2.cs
- AssemblyAttributesGoHere.cs
- AuthenticationSection.cs
- CmsInterop.cs
- XmlNotation.cs
- Int64Storage.cs
- TextFormatter.cs
- DataServiceRequestException.cs
- UniformGrid.cs
- MenuAdapter.cs
- DataSourceComponent.cs
- FileIOPermission.cs
- AddInPipelineAttributes.cs
- DataConnectionHelper.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DataServiceHost.cs
- SqlNamer.cs
- CorrelationExtension.cs
- DbCommandTree.cs
- Int64Animation.cs
- AdRotator.cs
- DispatcherExceptionEventArgs.cs
- AppSettingsExpressionBuilder.cs
- CommunicationObjectAbortedException.cs
- DialogResultConverter.cs
- ToolStripDropDownClosingEventArgs.cs
- RoleManagerModule.cs
- DefaultAssemblyResolver.cs
- oledbmetadatacolumnnames.cs
- Instrumentation.cs
- BitVector32.cs
- WindowProviderWrapper.cs
- InternalConfigSettingsFactory.cs
- AudioBase.cs
- DecoderNLS.cs
- DataServiceException.cs
- ButtonColumn.cs
- DataGridViewIntLinkedList.cs
- ObjectDataSourceMethodEventArgs.cs
- CodeSnippetExpression.cs
- Material.cs
- DataGridViewMethods.cs
- BitmapEffectGroup.cs
- TypeReference.cs
- Coordinator.cs
- SapiRecoContext.cs
- ColumnTypeConverter.cs
- NetworkInformationException.cs
- ToolStripContainer.cs
- RegexFCD.cs
- HuffModule.cs
- HitTestDrawingContextWalker.cs
- RadioButtonList.cs
- DBConnection.cs
- RequestBringIntoViewEventArgs.cs
- WorkItem.cs
- ParentControlDesigner.cs
- BindingCompleteEventArgs.cs
- _TransmitFileOverlappedAsyncResult.cs
- Int32RectConverter.cs
- Color.cs
- DefaultMergeHelper.cs
- MessageAction.cs
- ServerIdentity.cs
- NetStream.cs
- CodeLabeledStatement.cs
- WebPartsPersonalization.cs
- TemplatePartAttribute.cs
- WebPartUtil.cs
- DbDataRecord.cs
- DataBindEngine.cs
- DataStreamFromComStream.cs
- LinkedResourceCollection.cs
- RequestNavigateEventArgs.cs
- HttpContext.cs
- RowCache.cs
- Stroke.cs
- ReturnValue.cs
- Keywords.cs
- FixedSOMPageElement.cs
- X509CertificateTrustedIssuerElementCollection.cs
- OutputCacheModule.cs
- DataTrigger.cs
- QilXmlReader.cs
- PathFigureCollection.cs
- StrokeNode.cs
- ColumnWidthChangedEvent.cs
- WebPartConnectionsCancelVerb.cs
- XamlFrame.cs
- UnhandledExceptionEventArgs.cs
- BrushMappingModeValidation.cs
- MessageContractMemberAttribute.cs
- NamedPipeHostedTransportConfiguration.cs
- ProviderConnectionPoint.cs