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
- AnimatedTypeHelpers.cs
- SpellerStatusTable.cs
- BoolExpressionVisitors.cs
- InheritanceContextChangedEventManager.cs
- FixedSOMLineRanges.cs
- Environment.cs
- XmlKeywords.cs
- DocumentSequenceHighlightLayer.cs
- FillRuleValidation.cs
- CqlBlock.cs
- TransformCryptoHandle.cs
- VisualStyleRenderer.cs
- ErrorProvider.cs
- BaseHashHelper.cs
- Authorization.cs
- PaginationProgressEventArgs.cs
- PerformanceCounterPermissionEntry.cs
- Viewport3DVisual.cs
- ExpressionBindingCollection.cs
- BasicKeyConstraint.cs
- EmissiveMaterial.cs
- BuilderPropertyEntry.cs
- LoadWorkflowAsyncResult.cs
- FindRequestContext.cs
- LoginCancelEventArgs.cs
- SafeHGlobalHandleCritical.cs
- VisualStateGroup.cs
- InvokePattern.cs
- ToolStripManager.cs
- ScriptingProfileServiceSection.cs
- AsymmetricAlgorithm.cs
- ExecutionContext.cs
- FindSimilarActivitiesVerb.cs
- CodeRemoveEventStatement.cs
- ListViewAutomationPeer.cs
- URLMembershipCondition.cs
- LogEntryHeaderv1Deserializer.cs
- WebSysDescriptionAttribute.cs
- InputQueue.cs
- FileSystemWatcher.cs
- EntityFrameworkVersions.cs
- EntityTypeEmitter.cs
- ScriptReference.cs
- XamlFigureLengthSerializer.cs
- PrintEvent.cs
- FixedSOMImage.cs
- SourceSwitch.cs
- StringValidator.cs
- DbConnectionInternal.cs
- ZipPackage.cs
- ObjectComplexPropertyMapping.cs
- PropertyGroupDescription.cs
- TabItemAutomationPeer.cs
- SqlMethodAttribute.cs
- Marshal.cs
- TreeViewItem.cs
- ProjectionAnalyzer.cs
- Model3DGroup.cs
- EntityCommandExecutionException.cs
- TrustLevel.cs
- UniformGrid.cs
- InvariantComparer.cs
- CodeTypeConstructor.cs
- Vector3dCollection.cs
- Thread.cs
- ReadWriteSpinLock.cs
- SystemException.cs
- TraceRecord.cs
- DiagnosticTraceRecords.cs
- ActiveXSite.cs
- SoapSchemaExporter.cs
- SerializationEventsCache.cs
- FontStretch.cs
- DesigntimeLicenseContext.cs
- DrawingImage.cs
- StateWorkerRequest.cs
- Point3DAnimation.cs
- SizeAnimationClockResource.cs
- WebBaseEventKeyComparer.cs
- Span.cs
- ViewgenContext.cs
- LiteralControl.cs
- ScrollBar.cs
- DataSourceControlBuilder.cs
- ItemsControlAutomationPeer.cs
- ArraySegment.cs
- PropertiesTab.cs
- DetailsViewUpdatedEventArgs.cs
- DataGridItemEventArgs.cs
- UriScheme.cs
- WmlPhoneCallAdapter.cs
- ContentPresenter.cs
- DataGridColumnFloatingHeader.cs
- ICspAsymmetricAlgorithm.cs
- LogicalTreeHelper.cs
- Decoder.cs
- ReliabilityContractAttribute.cs
- FunctionQuery.cs
- CompilerScopeManager.cs
- SessionEndingEventArgs.cs