概述

转自 http://www.cnblogs.com/luomingui/archive/2013/09/19/3329763.html

最近几天一直在关注WinFrom方面的文章 有想着提炼一下项目的公共部分,公共部分有分为 界面,类库两方面,今天主要是把界面也先提炼提炼。

WeifenLuo.WinFormsUI.Docking + OutLookBar结合使用的效果图

WeifenLuo.WinFormsUI.Docking修改记录

http://sourceforge.net/projects/dockpanelsuite上下载源码新建DockContentEx文件并继承WeifenLuo.WinFormsUI.Docking.DockContent在里面加入ContextMenuStrip菜单工具并加入 关闭 全部关闭 除此之外全部关闭 三个菜单。项目结构如下

组件结构图:

源代码如下:

/// <summary>
/// 很多窗体都在Tab中有个右键菜单,右击的里面有关闭,所以最好继承一下DockContent,
/// 让其它窗体只要继承这个就有了这个右键菜单
/// </summary>
public class DockContentEx : DockContent
{
//在标签上点击右键显示关闭菜单
public DockContentEx( )
{
System.Windows.Forms.ContextMenuStrip cms = new System.Windows.Forms.ContextMenuStrip();
//
// tsmiClose
//
System.Windows.Forms.ToolStripMenuItem tsmiClose = 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);
//
// tsmiALLClose
//
System.Windows.Forms.ToolStripMenuItem tsmiALLClose = new System.Windows.Forms.ToolStripMenuItem();
tsmiALLClose.Name = "cms";
tsmiALLClose.Size = new System.Drawing.Size(98, 22);
tsmiALLClose.Text = "全部关闭";
tsmiALLClose.Click += new System.EventHandler(this.tsmiALLClose_Click);
//
// tsmiApartFromClose
//
System.Windows.Forms.ToolStripMenuItem tsmiApartFromClose = new System.Windows.Forms.ToolStripMenuItem();
tsmiApartFromClose.Name = "cms";
tsmiApartFromClose.Size = new System.Drawing.Size(98, 22);
tsmiApartFromClose.Text = "除此之外全部关闭";
tsmiApartFromClose.Click += new System.EventHandler(this.tsmiApartFromClose_Click);
//
// tsmiClose
//
cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
tsmiClose,tsmiApartFromClose,tsmiALLClose});
cms.Name = "tsmiClose";
cms.Size = new System.Drawing.Size(99, 26);
this.TabPageContextMenuStrip = cms;
}
private void tsmiClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void tsmiALLClose_Click(object sender, EventArgs e)
{
DockContentCollection contents = DockPanel.Contents;
int num = 0;
while (num < contents.Count)
{
if (contents[num].DockHandler.DockState == DockState.Document)
{
contents[num].DockHandler.Hide();
}
else
{
num++;
}
}
}
private void tsmiApartFromClose_Click(object sender, EventArgs e)
{
DockContentCollection contents = DockPanel.Contents;
int num = 0;
while (num < contents.Count)
{
if (contents[num].DockHandler.DockState == DockState.Document && DockPanel.ActiveContent != contents[num])
{
contents[num].DockHandler.Hide();
}
else
{
num++;
}
}
}
}

双击关闭标签代码 主要是修改 DockPaneStripBase.cs 类里的protected override void WndProc(ref Message m)函数 代码如下

[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;
//else
// content.DockHandler.Close(); //实现双击文档选项卡自动关闭

if

 (content.DockHandler.HideOnClose)
content.DockHandler.Hide();//隐藏

else
content.DockHandler.Close(); //关闭
} return;
} base.WndProc(ref m);
return;
}

我是这样偷着写代码的。

插件的代码使用的是OEA框架里面代码,Logging使用的是SuperSocket代码。

1: 获取指定目录的所有DLL到内存。

2: 在ToolboxFrm界面中加入到OutLookBar控件并显示出来。

WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用

WinForm界面开发之“OutLookBar”工具条

http://sourceforge.net/projects/dockpanelsuite

http://download.csdn.net/detail/luomingui/6290535

http://home.cnblogs.com/group/topic/54686.html 
http://blog.csdn.net/dqvega/article/details/7594923

C# WinForm 技巧八:界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar” 使用的更多相关文章

  1. C# WinForm 技巧八:界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar” 使用

    概述      最近几天一直在关注WinFrom方面的文章主要还是园子里伍华聪的博客,在看看我们自己写的项目差不忍赌啊,有想着提炼一下项目的公共部分,公共部分有分为 界面,类库两方面,今天主要是把界面 ...

  2. WinFrom界面框架之WeifenLuo.WinFormsUI.Docking + OutLookBar

    本文转载:http://www.cnblogs.com/luomingui/p/3329763.html WeifenLuo.WinFormsUI.Docking + OutLookBar结合使用的效 ...

  3. WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用

    WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用 转自:http://www.cnblogs.com/wuhuacong/arch ...

  4. WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二)

    WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二) 编写人:CC阿爸 2015-1-29 今天我想与大家继续一起分享这一伟大的控件.有兴趣的同 ...

  5. WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)

    WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一) 编写人:CC阿爸 2015-1-28 在伍华聪的博客中,看到布局控件"Weife ...

  6. 学习winform第三方界面weiFenLuo.winFormsUI.Docking.dll

    控件dockpanel中提供了几个可用的类, 重要的有两个, 一是DockPanel, 一是DockContent, DockPanel是从panel继承出来的, 用于提供可浮动的dock的子窗口进行 ...

  7. Winform中DockPanel(引用WeifenLuo.WinFormsUI.Docking.dll组件)的使用

    WeiFenLuo.WinFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可实现像Visual Studio的窗口停靠.拖拽等功能.WeifenLuo.Win ...

  8. Winform- 界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用

    布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的. 实 ...

  9. 开源布局控件 WeifenLuo.WinFormsUI.Docking.dll使用

    WeifenLuo.WinFormsUI.Docking是一个很强大的界面布局控件,可以保存自定义的布局为XML文件,可以加载XML配置文件.! 先看一下效果 使用说明: 1.新建一个WinForm程 ...

随机推荐

  1. 2016年象行中国(上海站)圆满结束,会议PPT分享

    2016年象行中国(上海站)已于5-21日圆满结束,所有技术交流的文档和PPT经整理后,现集中存放在云盘中,相关议题如下:     DeepGreen-LLVM-Intro.pptx ... 1.1M ...

  2. LeetCode: Convert Sorted List to Binary Search Tree 解题报告

    Convert Sorted List to Binary Search Tree Given a singly linked list where elements are sorted in as ...

  3. 没有公网IP的服务器如何通过有公网的服务器实现远程管理的功能?即VPN服务器搭建过程

    由于很多PPPoE帐号都没有公网IP了,那我们如何实现远程管理呢? 答案是比较简单的,首先,你要拥有一台有公网IP的路由器,其他品牌的也可以,但是下面我以WayOs作为VPN服务器,给大家一个教程. ...

  4. android studio出现Error:compileSdkVersion android-x requires compiling with JDK 7问题

    初装Android studio的童鞋可能或多或少会存在一些问题,比如出现Error:compileSdkVersion android-x requires compiling with JDK 7 ...

  5. 不同iOS版本做代码适配__IPHONE_OS_VERSION_MAX_ALLOWED 和 __IPHONE_8_0等专业术语

    目前开发只想最低版本支持iOS8了,iOS8以前的就不管了,然后现在iOS9和iOS10出来以后,有些新的API,也有些弃用的API,为了兼容,有时候代码里面需要编写判断不同iOS版本,或者只允许指定 ...

  6. MacBook 蓝牙无法搜索设备

    背景 经常把MacBook合上盖子就塞进包里,用时打开盖子就继续操作,偶尔会出现刚刚还在用的罗技蓝牙鼠标,重新打开笔记本后就连接不上了,而且也无法搜索到周边的蓝牙设备. 解决方案 快捷键:Option ...

  7. netbeans项目中排除node_modules文件夹

    由于项目中的javascript使用了gulp编译技术,所以在web目录下有js的源码目录,其中又有gulp所使用的nodeJS模块,node_modules下面小文件很多,所以造成netbeans扫 ...

  8. PL/SQL异常

    CASE_NOT_FOUND CASE selector WHEN selector_value_1 THEN statements_1 WHEN selector_value_2 THEN stat ...

  9. osgi:设置httpservice端口号

    使用osgi开发http类的Service,在启动时默认端口是80.但有可能这个端口已经被本机上的其他程序占用.那么解决问题的方法有两种:1)关闭或修改占用程序的端口: 2)修改osgi启动时的端口. ...

  10. ubuntu 添加管理员账户

    sudo adduser cat 输入密码即可 sudo adduser cat sudo 为cat 添加sudo 权限