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();
            }
        }
    }

  • 相关阅读:
    原:Myeclipse10+Egit+bitbucket实现版本控制
    Myeclipse10使用git
    MyEclipse 10 下在线安装插件
    转:git windows中文目录乱码问题解决
    STUN和TURN技术浅析
    原:android4.2.2蓝牙源码阅读--bluedroid部分
    原创:超简单!windows配置NDK开发环境使用JNI
    c++对象的生命周期
    C++中虚析构函数的作用
    windows 命令行下 简单好用的查看端口占用情况的方法
  • 原文地址:https://www.cnblogs.com/yvesliao/p/1276609.html
Copyright © 2011-2022 走看看