Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / Layout / LayoutEngine.cs / 1305376 / LayoutEngine.cs
//#define LAYOUT_PERFWATCH
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms.Layout {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Drawing;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Security.Permissions;
///
public abstract class LayoutEngine {
internal IArrangedElement CastToArrangedElement(object obj) {
IArrangedElement element = obj as IArrangedElement;
if(obj == null) {
throw new NotSupportedException(SR.GetString(SR.LayoutEngineUnsupportedType, obj.GetType()));
}
return element;
}
internal virtual Size GetPreferredSize(IArrangedElement container, Size proposedConstraints) { return Size.Empty; }
///
[System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")]
public virtual void InitLayout(object child, BoundsSpecified specified) {
InitLayoutCore(CastToArrangedElement(child), specified);
}
internal virtual void InitLayoutCore(IArrangedElement element, BoundsSpecified bounds) {}
internal virtual void ProcessSuspendedLayoutEventArgs(IArrangedElement container, LayoutEventArgs args) {}
#if LAYOUT_PERFWATCH
private static int LayoutWatch = 100;
#endif
///
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")]
public virtual bool Layout(object container, LayoutEventArgs layoutEventArgs) {
#if LAYOUT_PERFWATCH
Debug.WriteLine(container.GetType().Name + "::Layout("
+ (layoutEventArgs.AffectedControl != null ? layoutEventArgs.AffectedControl.Name : "null")
+ ", " + layoutEventArgs.AffectedProperty + ")");
Debug.Indent();
Stopwatch sw = new Stopwatch();
sw.Start();
#endif
bool parentNeedsLayout = LayoutCore(CastToArrangedElement(container), layoutEventArgs);
#if LAYOUT_PERFWATCH
sw.Stop();
if (sw.ElapsedMilliseconds > LayoutWatch && Debugger.IsAttached) {
Debugger.Break();
}
Debug.Unindent();
Debug.WriteLine(container.GetType().Name + "::Layout elapsed " + sw.ElapsedMilliseconds.ToString() + " returned: " + parentNeedsLayout);
#endif
return parentNeedsLayout;
}
internal virtual bool LayoutCore(IArrangedElement container, LayoutEventArgs layoutEventArgs) { return false; }
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConstructorNeedsTagAttribute.cs
- AesManaged.cs
- ModelPropertyDescriptor.cs
- _NetworkingPerfCounters.cs
- UiaCoreProviderApi.cs
- CheckPair.cs
- Symbol.cs
- ParserStreamGeometryContext.cs
- CatalogZone.cs
- PeerObject.cs
- PropertyPathConverter.cs
- QuestionEventArgs.cs
- BaseServiceProvider.cs
- _ListenerAsyncResult.cs
- ApplicationManager.cs
- SQLByte.cs
- CompilerGlobalScopeAttribute.cs
- PrivacyNoticeBindingElement.cs
- EventWaitHandle.cs
- FormatException.cs
- InstanceDescriptor.cs
- X509CertificateStore.cs
- FloatAverageAggregationOperator.cs
- InstanceLockLostException.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- ExtentKey.cs
- Listen.cs
- RichTextBox.cs
- MasterPageBuildProvider.cs
- LayoutEvent.cs
- FrameworkContextData.cs
- StrokeIntersection.cs
- Pen.cs
- SharedPersonalizationStateInfo.cs
- designeractionbehavior.cs
- XmlSortKey.cs
- SplineKeyFrames.cs
- TextParagraph.cs
- ZeroOpNode.cs
- TypedColumnHandler.cs
- HttpHandlerAction.cs
- DataControlExtensions.cs
- peernodestatemanager.cs
- ActivityBindForm.cs
- ReadingWritingEntityEventArgs.cs
- PeerInvitationResponse.cs
- AnimationException.cs
- NetCodeGroup.cs
- ItemDragEvent.cs
- FileNotFoundException.cs
- Misc.cs
- EventProviderWriter.cs
- AccessDataSourceWizardForm.cs
- FileLevelControlBuilderAttribute.cs
- DesignerVerb.cs
- LookupBindingPropertiesAttribute.cs
- SyndicationElementExtensionCollection.cs
- ConsumerConnectionPoint.cs
- StrokeIntersection.cs
- XomlSerializationHelpers.cs
- AnnotationResourceChangedEventArgs.cs
- Control.cs
- PersonalizationStateInfo.cs
- ComplexTypeEmitter.cs
- ProfileInfo.cs
- DataSourceSelectArguments.cs
- HighlightComponent.cs
- MsmqProcessProtocolHandler.cs
- RenderData.cs
- ContractInstanceProvider.cs
- Symbol.cs
- CallbackTimeoutsBehavior.cs
- KnownIds.cs
- HttpProfileGroupBase.cs
- NonPrimarySelectionGlyph.cs
- Scheduling.cs
- OperationContext.cs
- ListenerAdapterBase.cs
- HasCopySemanticsAttribute.cs
- QueryResult.cs
- FullTextLine.cs
- SafeNativeMethods.cs
- PackageDigitalSignature.cs
- DataObjectFieldAttribute.cs
- LicenseContext.cs
- NodeFunctions.cs
- ApplicationInterop.cs
- ToolStripContentPanelRenderEventArgs.cs
- SqlStatistics.cs
- DateTimeOffsetStorage.cs
- XPathParser.cs
- HwndSubclass.cs
- WebPartAuthorizationEventArgs.cs
- DiagnosticTraceSchemas.cs
- PassportIdentity.cs
- TypeTypeConverter.cs
- QilChoice.cs
- InkCollectionBehavior.cs
- BaseDataListDesigner.cs
- SafeNativeMethods.cs