Winfrom多文档界面实现

闲来无事,研究了下比较常用的多文档界面风格,网上找了好多例子,最终实现。记录一下

废话不多说,先上个效果:

默认打开我的桌面,首页不允许关闭,xtraTabPage动态添加。

下面来看下实现过程:

1、先创建一个主窗体

拖入xtraTabControl控件

设置xtraTabControl,Dock属性为Fill

设置ClosePageButtonShowMode属性为InAllTabPageHeaders

2、再创建多个XtraUserControl页面

代码:

打开默认显示首页

private void Ribbonmain_Load(object sender, EventArgs e)
{
Ucs2 ucs2 = new Ucs2();
ucs2.Dock = DockStyle.Fill;
ucs2.Visible = true;
xtraTabPage1.Controls.Add(ucs2);
//xtraTabControl1.Controls.Add(ucs2);
xtraTabControl1.SelectedTabPage = xtraTabPage1;
xtraTabPage1.ShowCloseButton = DevExpress.Utils.DefaultBoolean.False;//首页不显示关闭按钮

}

动态创建Page方法

void OpenUserControlXtab(UserControl userControl)
{
//String name = userControl.Text;
String name = userControl.Name;
foreach (XtraTabPage XTpage in xtraTabControl1.TabPages)
{
if (XTpage.Text == name)
{
xtraTabControl1.SelectedTabPage = XTpage;
return;
}
}
XtraTabPage page = new XtraTabPage();
page.Controls.Add(userControl);
//page.Text = userControl.Text;
page.Text = userControl.Name;
xtraTabControl1.TabPages.Add(page);
xtraTabControl1.SelectedTabPage = page;

//设置关闭事件
xtraTabControl1.CloseButtonClick += new EventHandler(XtraTabControl1CloseButtonClick);
}

//在程序关闭后 要释放资源
void XtraTabControl1CloseButtonClick(object sender,EventArgs e)
{
ClosePageButtonEventArgs a = (ClosePageButtonEventArgs)e;
string tabpagename = a.Page.Text;
foreach (Control xtp in xtraTabControl1.TabPages)
{
if (xtp.Text == tabpagename)
{
xtp.Dispose();
return;
}
}

}

按钮事件:

private void navBarItem1_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{

Ucs1 ucs1 = new Ucs1()
{
Visible = true,
Dock = DockStyle.Fill,
//BorderStyle = FormBorderStyle.None,
//TopLevel = false//在这里一定要注意  否则是加载不出来的
            };
OpenUserControlXtab(ucs1);

}

Winfrom多文档界面实现的更多相关文章

  1. 【Windows编程】系列第十一篇:多文档界面框架

    前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况.比如下面的UltraEdit就是一个典 ...

  2. Qt多文档界面应用设计

    使用Qt编写多文档界面(MDI)应用相当方便,主要会使用到QMdiArea和QMdiSubWindow两个类.可以查看Qt Asistant中这两个类的说明文档,里面介绍的相当详细.另外,可以搜索例程 ...

  3. 多文档界面的实现(DotNetBar的superTabControl)

    private void FormMain_Load(object sender, EventArgs e) { superTabControl2.Tabs.Clear(); timer1.Start ...

  4. 多文档界面QMdiArea

    当使用多文档界面功能时,我们是将QMdiArea作为主窗口的中央部件,然后在这个中央部件中,我们可以同时打开很多个子窗口QMdiSubWindow 样式: import sys from PyQt5. ...

  5. 基于WPF系统框架设计(5)-Ribbon整合Avalondock 2.0实现多文档界面设计(二)

    AvalonDock 是一个.NET库,用于在停靠模式布局(docking)中排列一系列WPF/WinForm控件.最新发布的版本原生支持MVVM框架.Aero Snap特效并具有更好的性能. Ava ...

  6. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

  7. 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理

    在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...

  8. PyQt(Python+Qt)学习随笔:QMdiArea多文档界面区域的viewMode、documentMode、tabsClosable、tabPosition等属性介绍

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 viewMode属性用于控制子窗口是使用子窗口模式(QMdiArea. ...

  9. 第三十章、containers容器类部件QMdiArea多文档界面部件功能介绍及开发应用

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...

随机推荐

  1. Bootstrap按钮式下拉菜单

    前面的话 按钮式下拉菜单仅从外观上看,和下拉菜单效果基本上是一样的.不同的是普通的下拉菜单是block元素,而按钮式下拉菜单是inline-block元素.本文将详细介绍Bootstrap按钮式下拉菜 ...

  2. Django-website 程序案例系列-8 html模板文件详解

    主模板:master.html <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  3. BZOJ3282Tree——LCT

    题目描述 给定N个点以及每个点的权值,要你处理接下来的M个操作. 操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的xor和. 保证x到y ...

  4. Scout YYF I POJ - 3744(概率dp + 矩阵快速幂)

    题意: 一条路上有n个地雷,你从1开始走,单位时间内有p的概率走一步,1-p的概率走两步,问安全通过这条路的概率 解析: 很容易想到 dp[i] = p * dp[i-1] + (1 - p) * d ...

  5. CodeForces 1110F Nearest Leaf | 线段树/换根

    我--又诈尸了-- 代码几乎都不会写了,打场CF居然上分啦,开心!(虽然还是比不过列表里的各路神仙) 题目链接 题目描述 一棵\(n\)个点的有根树,规定一种dfs序(规则:编号小的点优先dfs),\ ...

  6. 使用sharepoint里Open with explorer功能

    使用这个功能时,遇到几个问题: 1. 当点击library时,ie报错:A problem with this webpage caused Internet Explorer to close an ...

  7. Linux安装aMule下载eDonkey200网络共享文件

    安装aMule 如果你的发行版本包管理器中包含amule和amule-daemon可以直接安装. 如果不包含需要在编译的Configure过程添加参数以包含amulecmd和amuled:./conf ...

  8. (转)Servlet的生命周期——初始化、运行、销毁全部过程

    背景:面试中很基础的一个问题,所以有必要好好整理一番. Servlet体系结构是建立在 Java 多线程机制上的,它的生命周期由 Web 容器负责. 当客户端第一次请求某个 Servlet 时,Ser ...

  9. 路径或文件名中含有中文的jar文件双击启动不了 -> Java7的Bug?

    至从安装了java7后,才发现部分可执行的jar文件双击都启动不了了. 比如所有的jar文件放在桌面上双击启动不了. 比如所有的文件名中含有中文的jar文件双击启动不了. 比如一个 abc.jar 放 ...

  10. apigateway-kong(七)配置说明

    这一部分应该在最开始介绍,但是我觉得在对kong有一定了解后再回头看下配置,会理解的更深刻.接下来对这个配置文件里的参数做个详细的解释便于更好的使用或优化kong网关. 目录 一.配置加载 二.验证配 ...