zoukankan      html  css  js  c++  java
  • (转)DockPanel的一点点改进

    1、当双击Tab时,原先是直接把当前Tab所表示的这个窗体,从主窗体的框架上分离现来,成为一个浮动的窗体。这不是我想要的,我把它改成了双击关闭。
    在DockPaneStripBase的WndProc方法里,对于左键双击消息重新作了处理(下面注释掉的一行是原先的写法,它下面那行是改的):

            [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
            protected override void WndProc(ref Message m)
            {
                if (m.Msg == (int)Win32.Msgs.WM_LBUTTONDBLCLK)
                {
                    base.WndProc(ref m);

                    int index = HitTest();
                    if (DockPane.DockPanel.AllowEndUserDocking && index != -1)
                    {
                        IDockContent content = Tabs[index].Content;
                        //if (content.DockHandler.CheckDockState(!content.DockHandler.IsFloat) != DockState.Unknown)
                            //content.DockHandler.IsFloat = !content.DockHandler.IsFloat; 
                        if (content.DockHandler.HideOnClose)
                            content.DockHandler.Hide();
                        else
                            content.DockHandler.Close();               

                    }

                    return;
                }

                base.WndProc(ref m);
                return;
            }

    2、很多窗体都在Tab中有个右键菜单,右击的里面有关闭,所以最好继承一下DockContent,让其它窗体只要继承这个就有了这个右键菜单

    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
        {
            public DockContentEx()
            {
                ContextMenuStrip cms = new System.Windows.Forms.ContextMenuStrip();
                ToolStripMenuItem tsmiClose = new System.Windows.Forms.ToolStripMenuItem();
                //
                // cms
                //
                tsmiClose.Name = "cms";
                tsmiClose.Size = new System.Drawing.Size(98, 22);
                tsmiClose.Text = "关闭";
                tsmiClose.Click += new System.EventHandler(this.tsmiClose_Click);
                //
                // tsmiClose
                //
                cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
                tsmiClose});
                cms.Name = "tsmiClose";
                cms.Size = new System.Drawing.Size(99, 26);

                this.TabPageContextMenuStrip = cms;
            }

            private void tsmiClose_Click(object sender, EventArgs e)
            {
                this.Close();
            }
        }
    }

  • 相关阅读:
    [No000037]操作系统Operating Systems操作系统历史与硬件概况History of OS & Summaries!
    [No000036]操作系统Operating Systems系统调用的实现System_Call
    [No000035]操作系统Operating System之OS Interface操作系统接口
    [No000034]知乎-长期接收碎片化知识有什么弊端?
    [No000033]码农网-如何锻炼出最牛程序员的编码套路
    [No000032]程序员的年龄天花板
    [No000031]操作系统 Operating Systems 之Open the OS!
    [No000030]程序员节发点别的:中国教育整个把人脑子搞坏了-易中天
    [No00002F]3步,教你如何分解需求
    [No00002E]关于大数据,你不知道的6个迷思
  • 原文地址:https://www.cnblogs.com/ywcz060/p/3468685.html
Copyright © 2011-2022 走看看