DockPanel 右键增加关闭,除此之外全部关闭的功能

在项目中新建一个class文件,代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;



namespace WeifenLuo.WinFormsUI.Docking

{

    public class DockContentEx : WeifenLuo.WinFormsUI.Docking.DockContent

    {

        private ContextMenuStrip contextMenuStrip1;

        private ToolStripMenuItem 关闭ToolStripMenuItem;

        private ToolStripMenuItem 全部关闭ToolStripMenuItem;

        private ToolStripMenuItem 除此之外全部关闭ToolStripMenuItem;

        private IContainer components;

    

        public DockContentEx()

        {

            //ContextMenuStrip cms = new System.Windows.Forms.ContextMenuStrip();

            //ToolStripMenuItem tsmiClose = new System.Windows.Forms.ToolStripMenuItem();

            //ToolStripMenuItem tsmiCloseAll = new System.Windows.Forms.ToolStripMenuItem();



            //tsmiClose.Name = "cms";

            //tsmiClose.Size = new System.Drawing.Size(98, 22);

            //tsmiClose.Text = "关闭";

            //tsmiClose.Click += new System.EventHandler(this.tsmiClose_Click);



            //cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {tsmiClose});

            //cms.Name = "tsmiClose";

            //cms.Size = new System.Drawing.Size(99, 26);



            InitializeComponent();

            this.TabPageContextMenuStrip = contextMenuStrip1;

        }





        private void InitializeComponent()

        {

            this.components = new System.ComponentModel.Container();

            this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);

            this.关闭ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

            this.除此之外全部关闭ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

            this.全部关闭ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

            this.contextMenuStrip1.SuspendLayout();

            this.SuspendLayout();

            // 

            // contextMenuStrip1

            // 

            this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {

            this.关闭ToolStripMenuItem,

            this.除此之外全部关闭ToolStripMenuItem,

            this.全部关闭ToolStripMenuItem});

            this.contextMenuStrip1.Name = "contextMenuStrip1";

            this.contextMenuStrip1.ShowImageMargin = false;

            this.contextMenuStrip1.Size = new System.Drawing.Size(142, 92);

            // 

            // 关闭ToolStripMenuItem

            // 

            this.关闭ToolStripMenuItem.Name = "关闭ToolStripMenuItem";

            this.关闭ToolStripMenuItem.Size = new System.Drawing.Size(141, 22);

            this.关闭ToolStripMenuItem.Text = "关闭";

            this.关闭ToolStripMenuItem.Click += new System.EventHandler(this.关闭ToolStripMenuItem_Click);

            // 

            // 除此之外全部关闭ToolStripMenuItem

            // 

            this.除此之外全部关闭ToolStripMenuItem.Name = "除此之外全部关闭ToolStripMenuItem";

            this.除此之外全部关闭ToolStripMenuItem.Size = new System.Drawing.Size(141, 22);

            this.除此之外全部关闭ToolStripMenuItem.Text = "除此之外全部关闭";

            this.除此之外全部关闭ToolStripMenuItem.Click += new System.EventHandler(this.除此之外全部关闭ToolStripMenuItem_Click);

            // 

            // 全部关闭ToolStripMenuItem

            // 

            this.全部关闭ToolStripMenuItem.Name = "全部关闭ToolStripMenuItem";

            this.全部关闭ToolStripMenuItem.Size = new System.Drawing.Size(141, 22);

            this.全部关闭ToolStripMenuItem.Text = "全部关闭";

            this.全部关闭ToolStripMenuItem.Click += new System.EventHandler(this.全部关闭ToolStripMenuItem_Click);

            // 

            // DockContentEx

            // 

            this.ClientSize = new System.Drawing.Size(292, 273);

            this.Font = new System.Drawing.Font("SimSun", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));

            this.Name = "DockContentEx";

            this.contextMenuStrip1.ResumeLayout(false);

            this.ResumeLayout(false);



        }



        private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            this.Close();

        }



        private void 除此之外全部关闭ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            IDockContent[] documents = DockPanel.DocumentsToArray();



            foreach (IDockContent content in documents)

            {

                if (!content.Equals(this))

                {

                    content.DockHandler.Close();                    

                }

            }

        }



        private void 全部关闭ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            IDockContent[] documents = DockPanel.DocumentsToArray();



            foreach (IDockContent content in documents)

            {

                content.DockHandler.Close();

            }

        }

    }

}
View Code

其他准备以dockpanel方式打开的form都改为继承自上面这个DockPanelEx类

你可能感兴趣的:(Panel)