Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / ToolStripMenuItemCodeDomSerializer.cs / 1 / ToolStripMenuItemCodeDomSerializer.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.Design.ToolStripMenuItemCodeDomSerializer..ctor()")]
namespace System.Windows.Forms.Design {
using System;
using System.Diagnostics;
using System.CodeDom;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
///
/// The Reason for having a CustomSerializer for ToolStripMenuItem is the existance of Dummy ToolStripMenuItem for ContextMenuStrips.
/// We add this Dummy ToolStripMenuItem on the "Non Site" ToolStrip to Host the DropDown which facilitates the entry of New MenuItems.
/// These items are then added to the ContextMenuStrip that we are designing.
/// But we dont want the Dummy ToolStripMenuItem to Serialize and hence the need for this Custom Serializer.
///
internal class ToolStripMenuItemCodeDomSerializer : System.ComponentModel.Design.Serialization.CodeDomSerializer
{
///
/// We implement this for the abstract method on CodeDomSerializer.
///
public override object Deserialize(IDesignerSerializationManager manager, object codeObject)
{
return GetBaseSerializer(manager).Deserialize(manager, codeObject);
}
///
/// This is a small helper method that returns the serializer for base Class
///
private CodeDomSerializer GetBaseSerializer(IDesignerSerializationManager manager)
{
return (CodeDomSerializer)manager.GetSerializer(typeof(Component), typeof(CodeDomSerializer));
}
///
///
/// We implement this for the abstract method on CodeDomSerializer. This method
/// takes an object graph, and serializes the object into CodeDom elements.
///
public override object Serialize(IDesignerSerializationManager manager, object value)
{
ToolStripMenuItem item = value as ToolStripMenuItem;
ToolStrip parent = item.GetCurrentParent() as ToolStrip;
//Dont Serialize if we are Dummy Item ...
if ((item != null) && !(item.IsOnDropDown) && (parent != null) && (parent .Site == null))
{
//dont serialize anything...
return null;
}
else {
CodeDomSerializer baseSerializer = (CodeDomSerializer)manager.GetSerializer(typeof(ImageList).BaseType, typeof(CodeDomSerializer));
return baseSerializer.Serialize(manager, value);
}
}
}
}
// 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
- CookielessHelper.cs
- FontEmbeddingManager.cs
- FormViewCommandEventArgs.cs
- AdvancedBindingPropertyDescriptor.cs
- BookmarkManager.cs
- PlaceHolder.cs
- EventData.cs
- DecimalKeyFrameCollection.cs
- AudioBase.cs
- ThicknessConverter.cs
- TypeLibConverter.cs
- XmlSchemaComplexContentRestriction.cs
- TypeConverterValueSerializer.cs
- SelectiveScrollingGrid.cs
- GPRECTF.cs
- XmlParserContext.cs
- DocumentReference.cs
- CodeVariableReferenceExpression.cs
- HtmlToClrEventProxy.cs
- PagePropertiesChangingEventArgs.cs
- ObjectConverter.cs
- WinFormsSpinner.cs
- UnmanagedMarshal.cs
- VarInfo.cs
- NumericUpDownAcceleration.cs
- OleCmdHelper.cs
- PropertyDescriptorComparer.cs
- Int32Rect.cs
- HttpResponseHeader.cs
- HttpWebRequest.cs
- TimelineClockCollection.cs
- TextEditorSelection.cs
- WebBaseEventKeyComparer.cs
- RemotingConfigParser.cs
- CopyAction.cs
- XmlTextAttribute.cs
- Size3DValueSerializer.cs
- SeekableMessageNavigator.cs
- SortedList.cs
- Constants.cs
- Command.cs
- VisualBrush.cs
- BitmapMetadataBlob.cs
- SQLDateTimeStorage.cs
- XmlObjectSerializerContext.cs
- StateManagedCollection.cs
- SiteMembershipCondition.cs
- UIPermission.cs
- DrawingCollection.cs
- IndexExpression.cs
- SizeLimitedCache.cs
- TimelineGroup.cs
- AdRotator.cs
- ButtonColumn.cs
- ProcessThreadDesigner.cs
- WebConfigurationFileMap.cs
- SoapEnvelopeProcessingElement.cs
- RepeatBehaviorConverter.cs
- AccessDataSourceView.cs
- CompositeCollectionView.cs
- NominalTypeEliminator.cs
- Page.cs
- CodeConditionStatement.cs
- RoleService.cs
- TypeForwardedToAttribute.cs
- ValidationError.cs
- Size.cs
- FontConverter.cs
- EntitySqlQueryState.cs
- GotoExpression.cs
- AdornerHitTestResult.cs
- EventHandlersStore.cs
- DoubleCollection.cs
- TableLayoutSettingsTypeConverter.cs
- TextShapeableCharacters.cs
- _IPv6Address.cs
- ActiveXSite.cs
- ScrollBarRenderer.cs
- ContextStaticAttribute.cs
- DocumentOrderQuery.cs
- XmlNodeReader.cs
- Empty.cs
- ElementNotEnabledException.cs
- SoapObjectReader.cs
- exports.cs
- CharacterHit.cs
- ValidatingReaderNodeData.cs
- GroupByExpressionRewriter.cs
- GacUtil.cs
- ColumnWidthChangingEvent.cs
- Sql8ExpressionRewriter.cs
- IndexObject.cs
- OperationValidationEventArgs.cs
- ApplicationDirectory.cs
- Substitution.cs
- SocketPermission.cs
- ImageSourceValueSerializer.cs
- XmlStringTable.cs
- SortKey.cs
- Page.cs