C# WinForm 技巧八:界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar” 使用
概述
最近几天一直在关注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"的使用
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” 使用的更多相关文章
- C# WinForm 技巧八:界面开发之“WeifenLuo.WinFormsUI.Docking+OutLookBar” 使用
概述 转自 http://www.cnblogs.com/luomingui/archive/2013/09/19/3329763.html 最近几天一直在关注WinFrom方面的文章 有想着提炼一下 ...
- WinFrom界面框架之WeifenLuo.WinFormsUI.Docking + OutLookBar
本文转载:http://www.cnblogs.com/luomingui/p/3329763.html WeifenLuo.WinFormsUI.Docking + OutLookBar结合使用的效 ...
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用 转自:http://www.cnblogs.com/wuhuacong/arch ...
- WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二)
WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二) 编写人:CC阿爸 2015-1-29 今天我想与大家继续一起分享这一伟大的控件.有兴趣的同 ...
- WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)
WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一) 编写人:CC阿爸 2015-1-28 在伍华聪的博客中,看到布局控件"Weife ...
- 学习winform第三方界面weiFenLuo.winFormsUI.Docking.dll
控件dockpanel中提供了几个可用的类, 重要的有两个, 一是DockPanel, 一是DockContent, DockPanel是从panel继承出来的, 用于提供可浮动的dock的子窗口进行 ...
- Winform中DockPanel(引用WeifenLuo.WinFormsUI.Docking.dll组件)的使用
WeiFenLuo.WinFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可实现像Visual Studio的窗口停靠.拖拽等功能.WeifenLuo.Win ...
- Winform- 界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的. 实 ...
- 开源布局控件 WeifenLuo.WinFormsUI.Docking.dll使用
WeifenLuo.WinFormsUI.Docking是一个很强大的界面布局控件,可以保存自定义的布局为XML文件,可以加载XML配置文件.! 先看一下效果 使用说明: 1.新建一个WinForm程 ...
随机推荐
- 【转】Android studio 解决64K超出链接数限制问题
http://my.oschina.net/gabriel1215/blog/602608 目录[-] 使用MultiDex支持库 注意事项 结论 如果你是一个android开发者,你至少听说过的Da ...
- html 问题
1.footer处理 目标: 页面较短,footer位于页面底部,出现滚动条时,依然在原来的位置,不随滚动条移动 页面较长,位于元素底部 .container{ position: relative ...
- Oracle Ebs R12 SLA与GL关系变化
http://www.cnblogs.com/bruce_zhao/p/3809886.html Oracle Ebs R12 SLA与GL关系变化 SLA概念:SLA(Subledger Accou ...
- HTTP协议状态码详解(HTTP Status Code)
转自:http://www.cnblogs.com/shanyou/archive/2012/05/06/2486134.html 使用ASP.NET/PHP/JSP 或者javascript都会用到 ...
- js 调整排序
<html> <head> <script type='text/javascript' src='jquery-1.8.2.min.js'></script ...
- 2014年团队博客TOP10
2014年通过这个团队博客,葡萄城共输出了51篇原创技术博客(含翻译),总阅读超过9万人次,约有1万人次是通过RSS订阅方式阅读,总评论超过500人次. 这里我们通过阅读排序,选出2014年团队博客T ...
- 深入理解 CSS 的 :before 和 :after 选择器(制作select下拉列表美化插件)
原文链接:http://www.cnblogs.com/LY-leo/p/5765598.html 对于 :before 和 :after 选择器,大家并不陌生,但是很少有人会主动去用它们.先解释下它 ...
- paip.gui控件tabs控件加载内容的原理以及easyui最佳实现
paip.gui控件tabs控件加载内容的原理以及easyui最佳实现 //////////////tabs控件的加载 同form窗体一样,俩个方式 两个方式:一个是url,简单的文本可以使用这个,不 ...
- Effective STL中文版 译序
<Effective STL中文版>译序 就像本书的前两本姊妹作(Effective C++.More Effective C++)一样,本书的侧重点仍然在于提升读者的经验,只不过这次将焦 ...
- 将外卖O2O广告一棍子打成竞价排名,秤把平了吗?
近日,诸多媒体报道称美团外卖.饿了么等外卖O2O将竞价排名引入外卖平台当中进行广告运营一事闹得沸沸扬扬.那么,美团外卖.饿了么真的都是竞价排名吗? 其实,美团外卖的付费推广仅仅只是针对列表的固定位置, ...



