Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / ToolStripOverflow.cs / 1 / ToolStripOverflow.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Windows.Forms.Layout; using System.Security; using System.Security.Permissions; using System.Runtime.InteropServices; ////// /// ToolStripOverflow /// [ComVisible(true)] [ClassInterface(ClassInterfaceType.AutoDispatch)] public class ToolStripOverflow : ToolStripDropDown, IArrangedElement { #if DEBUG internal static readonly TraceSwitch PopupLayoutDebug = new TraceSwitch("PopupLayoutDebug", "Debug ToolStripPopup Layout code"); #else internal static readonly TraceSwitch PopupLayoutDebug; #endif private ToolStripOverflowButton ownerItem; ///public ToolStripOverflow (ToolStripItem parentItem) : base(parentItem) { if (parentItem == null) { throw new ArgumentNullException("parentItem"); } ownerItem = parentItem as ToolStripOverflowButton; } /// protected internal override ToolStripItemCollection DisplayedItems { get { if (ParentToolStrip != null) { ToolStripItemCollection items = ParentToolStrip.OverflowItems; return items; } return new ToolStripItemCollection(null, false); } } public override ToolStripItemCollection Items { get { return new ToolStripItemCollection(null, /*ownedCollection=*/false, /*readonly=*/true); } } private ToolStrip ParentToolStrip { get { if (ownerItem != null) { return ownerItem.ParentToolStrip; } return null; } } /// /// ArrangedElementCollection IArrangedElement.Children { get { return DisplayedItems; } } /// /// IArrangedElement IArrangedElement.Container { get { return ParentInternal; } } /// /// bool IArrangedElement.ParticipatesInLayout { get { return GetState(STATE_VISIBLE); } } /// /// PropertyStore IArrangedElement.Properties { get { return Properties; } } /// /// void IArrangedElement.SetBounds(Rectangle bounds, BoundsSpecified specified) { SetBoundsCore(bounds.X, bounds.Y, bounds.Width, bounds.Height, specified); } /// /// /// Summary of CreateLayoutEngine. /// /// public override LayoutEngine LayoutEngine { get { return FlowLayout.Instance; } } protected override AccessibleObject CreateAccessibilityInstance() { return new ToolStripOverflowAccessibleObject(this); } [SuppressMessage("Microsoft.Security", "CA2119:SealMethodsThatSatisfyPrivateInterfaces")] public override Size GetPreferredSize(Size constrainingSize) { constrainingSize.Width = 200; return base.GetPreferredSize(constrainingSize); } protected override void OnLayout(LayoutEventArgs e) { if (ParentToolStrip != null && ParentToolStrip.IsInDesignMode) { if (FlowLayout.GetFlowDirection(this) != FlowDirection.TopDown) { FlowLayout.SetFlowDirection(this, FlowDirection.TopDown); } if (FlowLayout.GetWrapContents(this)) { FlowLayout.SetWrapContents(this, false); } } else { if (FlowLayout.GetFlowDirection(this) != FlowDirection.LeftToRight) { FlowLayout.SetFlowDirection(this, FlowDirection.LeftToRight); } if (!FlowLayout.GetWrapContents(this)) { FlowLayout.SetWrapContents(this, true); } } base.OnLayout(e); } ///protected override void SetDisplayedItems() { // do nothing here.... this is really for the setting the overflow/displayed items on the // main winbar. Our working item collection is our displayed item collection... calling // base would clear it out. Size biggestItemSize = Size.Empty; for (int j = 0; j < DisplayedItems.Count; j++) { ToolStripItem item = DisplayedItems[j]; if (((IArrangedElement)item).ParticipatesInLayout) { HasVisibleItems = true; biggestItemSize = LayoutUtils.UnionSizes(biggestItemSize, item.Bounds.Size); } } SetLargestItemSize(biggestItemSize); } private class ToolStripOverflowAccessibleObject : ToolStripAccessibleObject { public ToolStripOverflowAccessibleObject(ToolStripOverflow owner) : base(owner) { } public override AccessibleObject GetChild(int index) { return ((ToolStripOverflow)Owner).DisplayedItems[index].AccessibilityObject; } public override int GetChildCount() { return ((ToolStripOverflow)Owner).DisplayedItems.Count; } } } } // 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
- ProbeRequestResponseAsyncResult.cs
- OracleRowUpdatedEventArgs.cs
- TimeIntervalCollection.cs
- TextEditorCopyPaste.cs
- _ListenerResponseStream.cs
- ExtentKey.cs
- InstanceView.cs
- ColorBlend.cs
- ConfigurationSectionGroupCollection.cs
- PersonalizationStateInfoCollection.cs
- FixedBufferAttribute.cs
- OleDbSchemaGuid.cs
- Msec.cs
- DataServiceEntityAttribute.cs
- PtsCache.cs
- TabItemWrapperAutomationPeer.cs
- ParseChildrenAsPropertiesAttribute.cs
- OutputCacheSection.cs
- ArglessEventHandlerProxy.cs
- Menu.cs
- ReadOnlyPermissionSet.cs
- CommandEventArgs.cs
- DataServiceProviderWrapper.cs
- ServiceThrottlingBehavior.cs
- VBIdentifierDesigner.xaml.cs
- mansign.cs
- unsafenativemethodstextservices.cs
- DesignerAdRotatorAdapter.cs
- GZipStream.cs
- GridViewEditEventArgs.cs
- ProfileModule.cs
- XmlQueryCardinality.cs
- OleDbException.cs
- MarshalDirectiveException.cs
- ConnectionStringSettings.cs
- XamlPoint3DCollectionSerializer.cs
- LayoutSettings.cs
- ReflectEventDescriptor.cs
- XmlSiteMapProvider.cs
- SrgsElementFactoryCompiler.cs
- DataTableReaderListener.cs
- ProcessDesigner.cs
- MethodSignatureGenerator.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- _SpnDictionary.cs
- SchemaContext.cs
- XmlSchemaValidator.cs
- MultipartIdentifier.cs
- ToolStripRenderEventArgs.cs
- StorageFunctionMapping.cs
- InputProcessorProfiles.cs
- VarRefManager.cs
- ProjectedSlot.cs
- CompositeCollection.cs
- DynamicILGenerator.cs
- DefaultParameterValueAttribute.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- CalendarDay.cs
- SessionParameter.cs
- ConstantSlot.cs
- CounterSample.cs
- PersonalizationAdministration.cs
- SessionParameter.cs
- ToolStripSplitButton.cs
- NeutralResourcesLanguageAttribute.cs
- DbMetaDataColumnNames.cs
- documentsequencetextpointer.cs
- MulticastDelegate.cs
- ActivityLocationReferenceEnvironment.cs
- RawStylusSystemGestureInputReport.cs
- MD5CryptoServiceProvider.cs
- X509Extension.cs
- DeploymentSection.cs
- BindingOperations.cs
- _BufferOffsetSize.cs
- DispatcherObject.cs
- ExclusiveHandle.cs
- XPathEmptyIterator.cs
- DataGridViewBindingCompleteEventArgs.cs
- SmiContext.cs
- MeshGeometry3D.cs
- BitmapCodecInfo.cs
- NamespaceList.cs
- StateItem.cs
- StylusSystemGestureEventArgs.cs
- ObjectDataSourceMethodEventArgs.cs
- ExternalFile.cs
- XmlILConstructAnalyzer.cs
- PartialToken.cs
- EmptyEnumerator.cs
- SqlConnectionStringBuilder.cs
- InputGestureCollection.cs
- LayoutDump.cs
- EncodingInfo.cs
- MetabaseSettingsIis7.cs
- DebugController.cs
- CodeDOMUtility.cs
- XmlNodeChangedEventArgs.cs
- RoutedEventValueSerializer.cs
- HostingEnvironmentException.cs