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
- ResourceAttributes.cs
- DerivedKeySecurityTokenStub.cs
- DesignerResources.cs
- TransactionContext.cs
- FileLevelControlBuilderAttribute.cs
- SecurityPolicyVersion.cs
- SQLString.cs
- DataGridState.cs
- TypeInfo.cs
- BinaryObjectReader.cs
- AttributeQuery.cs
- WindowProviderWrapper.cs
- StopStoryboard.cs
- Object.cs
- Region.cs
- RSAPKCS1KeyExchangeFormatter.cs
- FontWeight.cs
- ObjectTypeMapping.cs
- _HTTPDateParse.cs
- ProxyAssemblyNotLoadedException.cs
- TextServicesContext.cs
- AbandonedMutexException.cs
- TraceListener.cs
- Set.cs
- PreservationFileReader.cs
- TextServicesCompartmentEventSink.cs
- FormatterConverter.cs
- SigningProgress.cs
- AsyncResult.cs
- DetailsViewDeletedEventArgs.cs
- MessageQueueAccessControlEntry.cs
- XmlNamedNodeMap.cs
- DiscoveryEndpoint.cs
- DataSysAttribute.cs
- CodeExpressionRuleDeclaration.cs
- TimelineGroup.cs
- CodeDesigner.cs
- NameValueCollection.cs
- ResourceWriter.cs
- BidOverLoads.cs
- InputBindingCollection.cs
- TemplateControlParser.cs
- MulticastDelegate.cs
- ETagAttribute.cs
- ObjectListCommandCollection.cs
- Events.cs
- ScriptComponentDescriptor.cs
- StandardMenuStripVerb.cs
- EntityObject.cs
- TextTreeNode.cs
- SqlDataSourceSelectingEventArgs.cs
- CodeBinaryOperatorExpression.cs
- UIElement3DAutomationPeer.cs
- HttpModuleActionCollection.cs
- WmpBitmapDecoder.cs
- HotSpotCollectionEditor.cs
- ReadOnlyAttribute.cs
- SplitterPanel.cs
- AlternateViewCollection.cs
- Verify.cs
- Inflater.cs
- GuidelineCollection.cs
- _Rfc2616CacheValidators.cs
- StateMachineExecutionState.cs
- MarkupCompilePass2.cs
- XamlInterfaces.cs
- Qualifier.cs
- Tuple.cs
- EncryptedPackage.cs
- PatternMatcher.cs
- WebPartConnectionsConfigureVerb.cs
- Pkcs7Signer.cs
- DesignTimeParseData.cs
- ApplicationDirectory.cs
- ObjectItemAssemblyLoader.cs
- GridViewDeleteEventArgs.cs
- UIAgentCrashedException.cs
- DataGridRowsPresenter.cs
- PermissionSet.cs
- Boolean.cs
- SqlDataSourceConfigureSelectPanel.cs
- JsonWriter.cs
- Constraint.cs
- DateTimeStorage.cs
- TdsParserSafeHandles.cs
- FileDialog.cs
- basecomparevalidator.cs
- CodeCompileUnit.cs
- ActivityInterfaces.cs
- PreservationFileWriter.cs
- infer.cs
- SrgsItemList.cs
- XmlSchemaSimpleContentExtension.cs
- WeakEventManager.cs
- Button.cs
- DataControlField.cs
- WebPartVerb.cs
- BrowserTree.cs
- TextBoxDesigner.cs
- TypeToken.cs