ContextMenuStrip.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK