zoukankan      html  css  js  c++  java
  • [转]WeifenLuo.WinFormsUI.Docking——DockPanel的一点点改进

    转自:http://www.cnblogs.com/yvesliao/archive/2008/08/26/1276609.html

    1、当双击Tab时,原先是直接把当前Tab所表示的这个窗体,从主窗体的框架上分离现来,成为一个浮动的窗体。这不是我想要的,我把它改成了双击关闭。 在DockPaneStripBase.cs 的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();
            }
        }
    }
  • 相关阅读:
    nodejs发送http请求
    Codeforces Round #655 (Div. 2)
    闇の連鎖 树上LCA + 树上差分
    Tree 换根dp
    「水」悠悠碧波 kmp
    HH的项链
    Educational Codeforces Round 90 (Rated for Div. 2)
    巡逻(论为什么第二次求直径要用dp)
    Codeforces Round #651 (Div. 2)
    Treap板子
  • 原文地址:https://www.cnblogs.com/liul21cn/p/3055068.html
Copyright © 2011-2022 走看看