Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / ToolStripRenderEventArgs.cs / 1 / ToolStripRenderEventArgs.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms {
using System.Drawing;
///
///
/// ToolStripRenderEventArgs
///
public class ToolStripRenderEventArgs : EventArgs {
private ToolStrip toolStrip = null;
private Graphics graphics = null;
private Rectangle affectedBounds = Rectangle.Empty;
private Color backColor = Color.Empty;
///
///
/// This class represents all the information to render the toolStrip
///
public ToolStripRenderEventArgs(Graphics g, ToolStrip toolStrip) {
this.toolStrip = toolStrip;
this.graphics = g;
this.affectedBounds = new Rectangle(Point.Empty, toolStrip.Size);
}
///
///
/// This class represents all the information to render the toolStrip
///
public ToolStripRenderEventArgs(Graphics g, ToolStrip toolStrip, Rectangle affectedBounds, Color backColor) {
this.toolStrip = toolStrip;
this.affectedBounds = affectedBounds;
this.graphics = g;
this.backColor = backColor;
}
///
///
/// the bounds to draw in
///
public Rectangle AffectedBounds {
get {
return affectedBounds;
}
}
///
///
/// the back color to draw with.
///
public Color BackColor {
get {
if (backColor == Color.Empty) {
// get the user specified color
backColor = toolStrip.RawBackColor;
if (backColor == Color.Empty) {
if (toolStrip is ToolStripDropDown) {
backColor = SystemColors.Menu;
}
else if (toolStrip is MenuStrip) {
backColor = SystemColors.MenuBar;
}
else {
backColor = SystemColors.Control;
}
}
}
return backColor;
}
}
///
///
/// the graphics object to draw with
///
public Graphics Graphics {
get {
return graphics;
}
}
///
///
/// Represents which toolStrip was affected by the click
///
public ToolStrip ToolStrip {
get {
return toolStrip;
}
}
///
public Rectangle ConnectedArea {
get {
ToolStripDropDown dropDown = toolStrip as ToolStripDropDown;
if (dropDown != null) {
ToolStripDropDownItem ownerItem = dropDown.OwnerItem as ToolStripDropDownItem;
if (ownerItem is MdiControlStrip.SystemMenuItem) {
// there's no connected rect between a system menu item and a dropdown.
return Rectangle.Empty;
}
if (ownerItem !=null && ownerItem.ParentInternal != null && !ownerItem.IsOnDropDown) {
// translate the item into our coordinate system.
Rectangle itemBounds = new Rectangle(toolStrip.PointToClient(ownerItem.TranslatePoint(Point.Empty, ToolStripPointType.ToolStripItemCoords, ToolStripPointType.ScreenCoords)), ownerItem.Size);
Rectangle bounds = ToolStrip.Bounds;
Rectangle overlap = ToolStrip.ClientRectangle;
overlap.Inflate(1,1);
if (overlap.IntersectsWith(itemBounds)) {
switch (ownerItem.DropDownDirection) {
case ToolStripDropDownDirection.AboveLeft:
case ToolStripDropDownDirection.AboveRight:
// Consider... the shadow effect interferes with the connected area.
return Rectangle.Empty;
// return new Rectangle(itemBounds.X+1, bounds.Height -2, itemBounds.Width -2, 2);
case ToolStripDropDownDirection.BelowRight:
case ToolStripDropDownDirection.BelowLeft:
overlap.Intersect(itemBounds);
if (overlap.Height == 2) {
return new Rectangle(itemBounds.X+1, 0, itemBounds.Width -2, 2);
}
// if its overlapping more than one pixel, this means we've pushed it to obscure
// the menu item. in this case pretend it's not connected.
return Rectangle.Empty;
case ToolStripDropDownDirection.Right:
case ToolStripDropDownDirection.Left:
return Rectangle.Empty;
// Consider... the shadow effect interferes with the connected area.
// return new Rectangle(bounds.Width-2, 1, 2, itemBounds.Height-2);
}
}
}
}
return Rectangle.Empty;
}
}
}
}
// 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
- WebPartManager.cs
- HttpModulesSection.cs
- WebPartCollection.cs
- DriveInfo.cs
- DBCommand.cs
- SqlRowUpdatingEvent.cs
- RtfNavigator.cs
- XmlSchemaSubstitutionGroup.cs
- PersonalizationEntry.cs
- InboundActivityHelper.cs
- DeclaredTypeElement.cs
- ThaiBuddhistCalendar.cs
- ResolveCriteriaApril2005.cs
- EmptyImpersonationContext.cs
- TableItemPattern.cs
- SchemaImporterExtensionElementCollection.cs
- CroppedBitmap.cs
- SecondaryIndexList.cs
- HighContrastHelper.cs
- InfoCardRSACryptoProvider.cs
- BasicViewGenerator.cs
- DataBoundLiteralControl.cs
- ObjectStateEntryDbDataRecord.cs
- TextRangeEditLists.cs
- SqlHelper.cs
- SqlDependency.cs
- LongValidatorAttribute.cs
- DataServiceException.cs
- ToolStripItemRenderEventArgs.cs
- XmlCustomFormatter.cs
- ContractHandle.cs
- XhtmlTextWriter.cs
- ProcessHost.cs
- Control.cs
- SelectionProcessor.cs
- GridEntryCollection.cs
- CodeThrowExceptionStatement.cs
- DBNull.cs
- AdCreatedEventArgs.cs
- ConstNode.cs
- Drawing.cs
- WebPartMenu.cs
- SudsWriter.cs
- MenuItemBinding.cs
- SeparatorAutomationPeer.cs
- Propagator.JoinPropagator.cs
- ListViewSortEventArgs.cs
- Transactions.cs
- TextElementEnumerator.cs
- SourceChangedEventArgs.cs
- ContractBase.cs
- ProxyAttribute.cs
- recordstatefactory.cs
- TextFormatter.cs
- VectorConverter.cs
- HttpListenerException.cs
- BindingSource.cs
- DataSourceProvider.cs
- ResourcePermissionBaseEntry.cs
- StrongNameIdentityPermission.cs
- ApplicationHost.cs
- StorageEntityTypeMapping.cs
- InputLanguageSource.cs
- Pointer.cs
- SchemaImporterExtensionsSection.cs
- ModelPropertyDescriptor.cs
- GridViewSelectEventArgs.cs
- StringComparer.cs
- LateBoundBitmapDecoder.cs
- SByteStorage.cs
- ToolTipAutomationPeer.cs
- SamlAuthorityBinding.cs
- ExceptQueryOperator.cs
- MarkupObject.cs
- ViewStateModeByIdAttribute.cs
- SizeAnimationUsingKeyFrames.cs
- DataColumnCollection.cs
- CloudCollection.cs
- DocumentSequenceHighlightLayer.cs
- DefaultIfEmptyQueryOperator.cs
- CfgParser.cs
- ClientTargetCollection.cs
- SerializerDescriptor.cs
- MatrixValueSerializer.cs
- StringUtil.cs
- TreeView.cs
- ParserHooks.cs
- HtmlAnchor.cs
- SharedPersonalizationStateInfo.cs
- Pkcs9Attribute.cs
- InternalBufferOverflowException.cs
- XmlExpressionDumper.cs
- RtfNavigator.cs
- WorkflowMarkupSerializerMapping.cs
- VisualStyleElement.cs
- DataGridViewAdvancedBorderStyle.cs
- SQLRoleProvider.cs
- ScrollItemPatternIdentifiers.cs
- ClientRolePrincipal.cs
- DataGridViewComboBoxCell.cs