Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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.
//
//-----------------------------------------------------------------------------
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- VerificationAttribute.cs
- RequestChannelBinder.cs
- TableSectionStyle.cs
- Symbol.cs
- HMACRIPEMD160.cs
- HtmlControl.cs
- SafeThemeHandle.cs
- ContextMenuService.cs
- SqlClientWrapperSmiStreamChars.cs
- TextContainer.cs
- CodePageUtils.cs
- ToolStripDesignerUtils.cs
- MethodExpr.cs
- HtmlInputButton.cs
- WindowsTreeView.cs
- DictionaryMarkupSerializer.cs
- ReaderOutput.cs
- CodeConditionStatement.cs
- HandledMouseEvent.cs
- Control.cs
- DataGridViewAddColumnDialog.cs
- CompilerScope.cs
- ActionFrame.cs
- FixedSOMSemanticBox.cs
- TypeDelegator.cs
- HybridCollection.cs
- DynamicEndpointElement.cs
- SuspendDesigner.cs
- DataSourceCache.cs
- DateTimeSerializationSection.cs
- WebBrowsableAttribute.cs
- CustomErrorsSectionWrapper.cs
- SequenceDesignerAccessibleObject.cs
- SessionSwitchEventArgs.cs
- SignatureDescription.cs
- SocketPermission.cs
- DataGridAddNewRow.cs
- UserNameSecurityTokenProvider.cs
- Ops.cs
- InfoCardClaim.cs
- XmlSchemaChoice.cs
- OneWayBindingElementImporter.cs
- PreviewKeyDownEventArgs.cs
- TextCharacters.cs
- IteratorDescriptor.cs
- UInt64Storage.cs
- SafeLibraryHandle.cs
- NumberFormatInfo.cs
- FormViewDeletedEventArgs.cs
- CodeIdentifier.cs
- XmlObjectSerializerWriteContextComplex.cs
- XmlReaderDelegator.cs
- LocalizationComments.cs
- shaper.cs
- PropertyItemInternal.cs
- ColumnResult.cs
- SymmetricKey.cs
- FullTrustAssemblyCollection.cs
- CodeDefaultValueExpression.cs
- FixedPageAutomationPeer.cs
- DocumentPaginator.cs
- CookielessHelper.cs
- ResourceIDHelper.cs
- DependencyPropertyAttribute.cs
- BamlBinaryWriter.cs
- XhtmlBasicPanelAdapter.cs
- MembershipSection.cs
- ListViewSelectEventArgs.cs
- CodeConditionStatement.cs
- DocumentApplicationJournalEntry.cs
- PropertyGridCommands.cs
- Variable.cs
- AdornerLayer.cs
- RegexParser.cs
- Point3DCollection.cs
- sqlcontext.cs
- Int64AnimationBase.cs
- EditorBrowsableAttribute.cs
- GridPattern.cs
- PrivilegeNotHeldException.cs
- ThreadExceptionDialog.cs
- Bezier.cs
- StickyNoteHelper.cs
- TemplateLookupAction.cs
- WindowsImpersonationContext.cs
- SimpleApplicationHost.cs
- XmlUnspecifiedAttribute.cs
- DocumentViewer.cs
- ReturnValue.cs
- ADConnectionHelper.cs
- WorkItem.cs
- ServiceOperationWrapper.cs
- WebPartMinimizeVerb.cs
- _TransmitFileOverlappedAsyncResult.cs
- Int16Animation.cs
- DataFieldConverter.cs
- MergeFailedEvent.cs
- DataStorage.cs
- WinOEToolBoxItem.cs
- StreamMarshaler.cs