Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / WinForms / Managed / System / WinForms / ContextMenuStrip.cs / 1 / ContextMenuStrip.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms {
using System;
using System.ComponentModel;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
/// this class is just a conceptual wrapper around ToolStripDropDownMenu.
[
ComVisible(true),
ClassInterface(ClassInterfaceType.AutoDispatch),
DefaultEvent("Opening"),
SRDescription(SR.DescriptionContextMenuStrip)
]
public class ContextMenuStrip : ToolStripDropDownMenu {
///
/// Summary of ContextMenuStrip.
///
public ContextMenuStrip(IContainer container) : base() {
// this constructor ensures ContextMenuStrip is disposed properly since its not parented to the form.
if (container == null) {
throw new ArgumentNullException("container");
}
container.Add(this);
}
public ContextMenuStrip(){
}
protected override void Dispose(bool disposing) {
base.Dispose(disposing);
}
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
SRDescription(SR.ContextMenuStripSourceControlDescr)
]
public Control SourceControl {
[UIPermission(SecurityAction.Demand, Window=UIPermissionWindow.AllWindows)]
get {
return SourceControlInternal;
}
}
// minimal Clone implementation for DGV support only.
internal ContextMenuStrip Clone() {
// VERY limited support for cloning.
ContextMenuStrip contextMenuStrip = new ContextMenuStrip();
// copy over events
contextMenuStrip.Events.AddHandlers(this.Events);
contextMenuStrip.AutoClose = AutoClose;
contextMenuStrip.AutoSize = AutoSize;
contextMenuStrip.Bounds = Bounds;
contextMenuStrip.ImageList = ImageList;
contextMenuStrip.ShowCheckMargin = ShowCheckMargin;
contextMenuStrip.ShowImageMargin = ShowImageMargin;
// copy over relevant properties
for (int i = 0; i < Items.Count; i++) {
ToolStripItem item = Items[i];
if (item is ToolStripSeparator) {
contextMenuStrip.Items.Add(new ToolStripSeparator());
}
else if (item is ToolStripMenuItem) {
ToolStripMenuItem menuItem = item as ToolStripMenuItem;
contextMenuStrip.Items.Add(menuItem.Clone());
}
}
return contextMenuStrip;
}
// internal overload so we know whether or not to show mnemonics.
internal void ShowInternal(Control source, Point location, bool isKeyboardActivated) {
Show(source, location);
// if we were activated by keyboard - show mnemonics.
if (isKeyboardActivated) {
ToolStripManager.ModalMenuFilter.Instance.ShowUnderlines = true;
}
}
internal void ShowInTaskbar(int x, int y) {
// we need to make ourselves a topmost window
WorkingAreaConstrained = false;
Rectangle bounds = CalculateDropDownLocation(new Point(x,y), ToolStripDropDownDirection.AboveLeft);
Rectangle screenBounds = Screen.FromRectangle(bounds).Bounds;
if (bounds.Y < screenBounds.Y) {
bounds = CalculateDropDownLocation(new Point(x,y), ToolStripDropDownDirection.BelowLeft);
}
else if (bounds.X < screenBounds.X) {
bounds = CalculateDropDownLocation(new Point(x,y), ToolStripDropDownDirection.AboveRight);
}
bounds = WindowsFormsUtils.ConstrainToBounds(screenBounds, bounds);
Show(bounds.X, bounds.Y);
}
protected override void SetVisibleCore(bool visible) {
if (!visible) {
WorkingAreaConstrained = true;
}
base.SetVisibleCore(visible);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms {
using System;
using System.ComponentModel;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
/// this class is just a conceptual wrapper around ToolStripDropDownMenu.
[
ComVisible(true),
ClassInterface(ClassInterfaceType.AutoDispatch),
DefaultEvent("Opening"),
SRDescription(SR.DescriptionContextMenuStrip)
]
public class ContextMenuStrip : ToolStripDropDownMenu {
///
/// Summary of ContextMenuStrip.
///
public ContextMenuStrip(IContainer container) : base() {
// this constructor ensures ContextMenuStrip is disposed properly since its not parented to the form.
if (container == null) {
throw new ArgumentNullException("container");
}
container.Add(this);
}
public ContextMenuStrip(){
}
protected override void Dispose(bool disposing) {
base.Dispose(disposing);
}
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
SRDescription(SR.ContextMenuStripSourceControlDescr)
]
public Control SourceControl {
[UIPermission(SecurityAction.Demand, Window=UIPermissionWindow.AllWindows)]
get {
return SourceControlInternal;
}
}
// minimal Clone implementation for DGV support only.
internal ContextMenuStrip Clone() {
// VERY limited support for cloning.
ContextMenuStrip contextMenuStrip = new ContextMenuStrip();
// copy over events
contextMenuStrip.Events.AddHandlers(this.Events);
contextMenuStrip.AutoClose = AutoClose;
contextMenuStrip.AutoSize = AutoSize;
contextMenuStrip.Bounds = Bounds;
contextMenuStrip.ImageList = ImageList;
contextMenuStrip.ShowCheckMargin = ShowCheckMargin;
contextMenuStrip.ShowImageMargin = ShowImageMargin;
// copy over relevant properties
for (int i = 0; i < Items.Count; i++) {
ToolStripItem item = Items[i];
if (item is ToolStripSeparator) {
contextMenuStrip.Items.Add(new ToolStripSeparator());
}
else if (item is ToolStripMenuItem) {
ToolStripMenuItem menuItem = item as ToolStripMenuItem;
contextMenuStrip.Items.Add(menuItem.Clone());
}
}
return contextMenuStrip;
}
// internal overload so we know whether or not to show mnemonics.
internal void ShowInternal(Control source, Point location, bool isKeyboardActivated) {
Show(source, location);
// if we were activated by keyboard - show mnemonics.
if (isKeyboardActivated) {
ToolStripManager.ModalMenuFilter.Instance.ShowUnderlines = true;
}
}
internal void ShowInTaskbar(int x, int y) {
// we need to make ourselves a topmost window
WorkingAreaConstrained = false;
Rectangle bounds = CalculateDropDownLocation(new Point(x,y), ToolStripDropDownDirection.AboveLeft);
Rectangle screenBounds = Screen.FromRectangle(bounds).Bounds;
if (bounds.Y < screenBounds.Y) {
bounds = CalculateDropDownLocation(new Point(x,y), ToolStripDropDownDirection.BelowLeft);
}
else if (bounds.X < screenBounds.X) {
bounds = CalculateDropDownLocation(new Point(x,y), ToolStripDropDownDirection.AboveRight);
}
bounds = WindowsFormsUtils.ConstrainToBounds(screenBounds, bounds);
Show(bounds.X, bounds.Y);
}
protected override void SetVisibleCore(bool visible) {
if (!visible) {
WorkingAreaConstrained = true;
}
base.SetVisibleCore(visible);
}
}
}
// 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
- EdmType.cs
- AppDomainProtocolHandler.cs
- FontStretch.cs
- RemoteHelper.cs
- AppDomainManager.cs
- SimpleRecyclingCache.cs
- FaultFormatter.cs
- SqlInternalConnectionTds.cs
- IntPtr.cs
- TemplateEditingService.cs
- FontFamilyConverter.cs
- XmlUrlEditor.cs
- WindowsToolbarItemAsMenuItem.cs
- DataGridViewAddColumnDialog.cs
- AssemblyNameProxy.cs
- DelayedRegex.cs
- XmlSchemaSimpleContentExtension.cs
- PathStreamGeometryContext.cs
- ExceptionHelpers.cs
- HostingPreferredMapPath.cs
- SqlConnection.cs
- StateDesigner.LayoutSelectionGlyph.cs
- ToolStripDropDown.cs
- RegionInfo.cs
- ISessionStateStore.cs
- MobileTextWriter.cs
- EntityModelBuildProvider.cs
- RecordManager.cs
- EventDescriptor.cs
- PointCollection.cs
- DesignerEditorPartChrome.cs
- DataGridViewRowsAddedEventArgs.cs
- WebControlsSection.cs
- UpdateProgress.cs
- SimplePropertyEntry.cs
- ArcSegment.cs
- PlatformNotSupportedException.cs
- FunctionCommandText.cs
- Int64AnimationBase.cs
- RelatedView.cs
- Grid.cs
- UpdateCommandGenerator.cs
- WebPartDescription.cs
- SimpleType.cs
- EllipticalNodeOperations.cs
- XmlSchemaGroup.cs
- WorkflowInstanceExtensionManager.cs
- TextRangeSerialization.cs
- SubstitutionList.cs
- BamlTreeMap.cs
- DerivedKeySecurityTokenStub.cs
- SspiWrapper.cs
- EntityViewContainer.cs
- XsdBuildProvider.cs
- AliasExpr.cs
- XmlSignatureManifest.cs
- TablePattern.cs
- WriterOutput.cs
- FloaterBaseParagraph.cs
- SimpleTextLine.cs
- _IPv4Address.cs
- SafeFileHandle.cs
- HierarchicalDataBoundControlAdapter.cs
- InvalidProgramException.cs
- DataRecord.cs
- FaultDesigner.cs
- ConfigurationStrings.cs
- XmlSortKey.cs
- DataViewSetting.cs
- ColorBlend.cs
- Int32Collection.cs
- RequestDescription.cs
- BoolLiteral.cs
- ZoneLinkButton.cs
- ColumnBinding.cs
- PolygonHotSpot.cs
- TimeSpanMinutesConverter.cs
- RawStylusActions.cs
- PageContentCollection.cs
- ChannelRequirements.cs
- AsynchronousChannelMergeEnumerator.cs
- ReliableMessagingVersionConverter.cs
- LookupBindingPropertiesAttribute.cs
- PropertyMetadata.cs
- MultipartContentParser.cs
- Column.cs
- Config.cs
- WorkflowFileItem.cs
- DataGridPageChangedEventArgs.cs
- AsyncResult.cs
- GridItemPattern.cs
- AuthenticationException.cs
- XPathDocument.cs
- ToolStripSeparator.cs
- ContentPlaceHolder.cs
- ModulesEntry.cs
- MultiAsyncResult.cs
- DataTableReaderListener.cs
- httpapplicationstate.cs
- Tracking.cs