Code:
/ DotNET / DotNET / 8.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
- EtwTrace.cs
- XmlWriterDelegator.cs
- BamlTreeUpdater.cs
- ValidationUtility.cs
- EntitySetBase.cs
- PageAsyncTask.cs
- Ray3DHitTestResult.cs
- MsmqEncryptionAlgorithm.cs
- EdmPropertyAttribute.cs
- ImageAnimator.cs
- Perspective.cs
- CollectionView.cs
- IntSecurity.cs
- DataGridColumnHeadersPresenter.cs
- XmlSchemaInferenceException.cs
- PrimitiveCodeDomSerializer.cs
- EventSetterHandlerConverter.cs
- EntityDataSourceColumn.cs
- UnmanagedMemoryStreamWrapper.cs
- ComponentEditorForm.cs
- Screen.cs
- KeySpline.cs
- SafeThreadHandle.cs
- LineGeometry.cs
- StringExpressionSet.cs
- MatrixIndependentAnimationStorage.cs
- AppearanceEditorPart.cs
- SystemGatewayIPAddressInformation.cs
- ArcSegment.cs
- Crc32Helper.cs
- MethodCallConverter.cs
- DataGrid.cs
- DetailsViewRowCollection.cs
- EventMappingSettings.cs
- EmptyControlCollection.cs
- StylusPointProperty.cs
- Input.cs
- UriSection.cs
- PointCollection.cs
- TraceRecord.cs
- Exceptions.cs
- uribuilder.cs
- Size3DConverter.cs
- shaperfactoryquerycachekey.cs
- BitmapEffectDrawingContextWalker.cs
- XhtmlBasicPanelAdapter.cs
- StoreUtilities.cs
- ToolStripPanelRow.cs
- FormsAuthenticationTicket.cs
- DiscoveryReference.cs
- XPathException.cs
- PageSetupDialog.cs
- WorkflowDispatchContext.cs
- VideoDrawing.cs
- Polyline.cs
- DbProviderFactories.cs
- ProxyDataContractResolver.cs
- DataObjectAttribute.cs
- CombinedGeometry.cs
- OleDbDataReader.cs
- Binding.cs
- ComponentChangedEvent.cs
- Single.cs
- XmlReaderSettings.cs
- BaseAutoFormat.cs
- EventDescriptorCollection.cs
- LinearGradientBrush.cs
- HybridDictionary.cs
- ChangeBlockUndoRecord.cs
- ListenerElementsCollection.cs
- RIPEMD160Managed.cs
- DesignerObject.cs
- SoapSchemaMember.cs
- PeerResolverSettings.cs
- EntityDataSourceContainerNameItem.cs
- TaskFormBase.cs
- AssemblySettingAttributes.cs
- CodeMemberEvent.cs
- ValueExpressions.cs
- CompositeControl.cs
- BufferedStream2.cs
- ContextMarshalException.cs
- NullRuntimeConfig.cs
- HebrewNumber.cs
- SimpleBitVector32.cs
- ArraySortHelper.cs
- BindingObserver.cs
- VectorAnimationUsingKeyFrames.cs
- OrderedDictionary.cs
- EncryptedPackageFilter.cs
- WindowClosedEventArgs.cs
- CodeObjectCreateExpression.cs
- GroupBoxDesigner.cs
- SrgsDocument.cs
- IERequestCache.cs
- remotingproxy.cs
- Tokenizer.cs
- BinaryReader.cs
- PropagatorResult.cs
- TagPrefixInfo.cs