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

  • 相关阅读:
    使用repeater tableb绑定数据库
    运用js脚本实现table自动添加、删除行
    asp.net ListBox单选、全选、清除等功能
    .net 使用webservice 技术的测试案例
    使用.Net三层架构实现Gridview增、删、改功能
    使用用户控件AspNetPager+Gridview实现分页功能
    silverlight+wcf+linq to sql访问数据
    javascript实现乘法表(本人是菜鸟)
    oracle创建主键自增字段
    C#作Windows服务获取运行目录的方法
  • 原文地址:https://www.cnblogs.com/yvesliao/p/1276609.html
Copyright © 2011-2022 走看看