Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / ToolStripOverflowButton.cs / 1 / ToolStripOverflowButton.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.Windows.Forms.Design;
///
///
/// ToolStripOverflowButton
///
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.None)]
public class ToolStripOverflowButton : ToolStripDropDownButton {
// we need to cache this away as the Parent property gets reset a lot.
private ToolStrip parentToolStrip;
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
internal ToolStripOverflowButton(ToolStrip parentToolStrip) {
SupportsItemClick = false;
this.parentToolStrip = parentToolStrip;
}
///
protected internal override Padding DefaultMargin {
get {
return Padding.Empty;
}
}
///
public override bool HasDropDownItems {
get {
return this.ParentInternal.OverflowItems.Count > 0;
}
}
internal override bool OppositeDropDownAlign {
get { return true; }
}
internal ToolStrip ParentToolStrip {
get { return parentToolStrip; }
}
[
Browsable(false),
EditorBrowsable(EditorBrowsableState.Never),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public new bool RightToLeftAutoMirrorImage {
get {
return base.RightToLeftAutoMirrorImage;
}
set {
base.RightToLeftAutoMirrorImage = value;
}
}
protected override AccessibleObject CreateAccessibilityInstance() {
return new ToolStripOverflowButtonAccessibleObject(this);
}
///
protected override ToolStripDropDown CreateDefaultDropDown() {
// AutoGenerate a Winbar DropDown - set the property so we hook events
return new ToolStripOverflow(this);
}
///
public override Size GetPreferredSize(Size constrainingSize) {
Size preferredSize = constrainingSize;
if (this.ParentInternal != null) {
if (this.ParentInternal.Orientation == Orientation.Horizontal) {
preferredSize.Width = Math.Min(constrainingSize.Width, 16);
}
else {
preferredSize.Height = Math.Min(constrainingSize.Height, 16);
}
}
return preferredSize + this.Padding.Size;
}
// make sure the Overflow button extends from edge-edge. (Ignore Padding/Margin).
internal protected override void SetBounds(Rectangle bounds) {
if (ParentInternal != null && ParentInternal.LayoutEngine is ToolStripSplitStackLayout) {
if (ParentInternal.Orientation == Orientation.Horizontal) {
bounds.Height = ParentInternal.Height;
bounds.Y = 0;
}
else {
bounds.Width = ParentInternal.Width;
bounds.X = 0;
}
}
base.SetBounds(bounds);
}
///
protected override void OnPaint(PaintEventArgs e) {
if (this.ParentInternal != null) {
ToolStripRenderer renderer = this.ParentInternal.Renderer;
renderer.DrawOverflowButtonBackground(new ToolStripItemRenderEventArgs(e.Graphics, this));
}
}
internal class ToolStripOverflowButtonAccessibleObject : ToolStripDropDownItemAccessibleObject {
private string stockName;
public ToolStripOverflowButtonAccessibleObject(ToolStripOverflowButton owner) : base(owner){
}
public override string Name {
get {
string name = Owner.AccessibleName;
if (name != null) {
return name;
}
if (string.IsNullOrEmpty(stockName)) {
stockName = SR.GetString(SR.ToolStripOptions);
}
return stockName;
}
set {
base.Name = 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
- ToolBar.cs
- ClassDataContract.cs
- DetailsViewInsertEventArgs.cs
- Error.cs
- DataSourceExpression.cs
- CodeDomLoader.cs
- Int32KeyFrameCollection.cs
- SqlBulkCopyColumnMapping.cs
- RegexRunner.cs
- CultureInfo.cs
- CachedBitmap.cs
- ManageRequest.cs
- CallbackHandler.cs
- ADConnectionHelper.cs
- XmlSchemaImport.cs
- AdornerHitTestResult.cs
- _SSPISessionCache.cs
- OracleParameterBinding.cs
- PageBuildProvider.cs
- DomainUpDown.cs
- BaseProcessor.cs
- PropertyValueChangedEvent.cs
- PageHandlerFactory.cs
- DecoderBestFitFallback.cs
- ResourceManager.cs
- RijndaelCryptoServiceProvider.cs
- HtmlInputText.cs
- HttpWebRequest.cs
- _BaseOverlappedAsyncResult.cs
- LogSwitch.cs
- Pair.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- SmiConnection.cs
- OutputCacheSection.cs
- WebSysDefaultValueAttribute.cs
- TraceEventCache.cs
- ComponentFactoryHelpers.cs
- XsdCachingReader.cs
- OleDbEnumerator.cs
- TraceContextEventArgs.cs
- ArgIterator.cs
- CodeThrowExceptionStatement.cs
- KeyboardNavigation.cs
- SafeNativeMethodsMilCoreApi.cs
- TextTrailingCharacterEllipsis.cs
- HiddenFieldPageStatePersister.cs
- ResolveNameEventArgs.cs
- CookieHandler.cs
- _NegoStream.cs
- EdmToObjectNamespaceMap.cs
- RegularExpressionValidator.cs
- HttpCacheParams.cs
- HttpBrowserCapabilitiesBase.cs
- Win32Exception.cs
- SynchronizationLockException.cs
- DelegatingTypeDescriptionProvider.cs
- MatrixCamera.cs
- WorkflowRuntimeServiceElementCollection.cs
- URIFormatException.cs
- SyndicationSerializer.cs
- ConfigErrorGlyph.cs
- Zone.cs
- PeerToPeerException.cs
- SourceElementsCollection.cs
- Rotation3D.cs
- _ListenerAsyncResult.cs
- _TLSstream.cs
- DataGridPageChangedEventArgs.cs
- StylusCaptureWithinProperty.cs
- SequentialOutput.cs
- XmlIncludeAttribute.cs
- ValueConversionAttribute.cs
- Rect3DValueSerializer.cs
- TimeSpanSecondsConverter.cs
- HttpModule.cs
- JournalEntryStack.cs
- GeometryValueSerializer.cs
- AssociatedControlConverter.cs
- PublisherMembershipCondition.cs
- HelpKeywordAttribute.cs
- SqlSelectStatement.cs
- FontWeightConverter.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ConfigurationSectionGroup.cs
- MessageHeaderDescription.cs
- ColumnBinding.cs
- COSERVERINFO.cs
- HttpPostedFileWrapper.cs
- InputEventArgs.cs
- LogWriteRestartAreaAsyncResult.cs
- XmlSerializableReader.cs
- PersonalizablePropertyEntry.cs
- addressfiltermode.cs
- DataGridViewLinkColumn.cs
- documentsequencetextview.cs
- DateTimeAutomationPeer.cs
- UserControlCodeDomTreeGenerator.cs
- ToolStripPanelCell.cs
- ConsumerConnectionPointCollection.cs
- PropertyEmitter.cs