Winfrom多文档界面实现
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多文档界面实现的更多相关文章
- 【Windows编程】系列第十一篇:多文档界面框架
前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况.比如下面的UltraEdit就是一个典 ...
- Qt多文档界面应用设计
使用Qt编写多文档界面(MDI)应用相当方便,主要会使用到QMdiArea和QMdiSubWindow两个类.可以查看Qt Asistant中这两个类的说明文档,里面介绍的相当详细.另外,可以搜索例程 ...
- 多文档界面的实现(DotNetBar的superTabControl)
private void FormMain_Load(object sender, EventArgs e) { superTabControl2.Tabs.Clear(); timer1.Start ...
- 多文档界面QMdiArea
当使用多文档界面功能时,我们是将QMdiArea作为主窗口的中央部件,然后在这个中央部件中,我们可以同时打开很多个子窗口QMdiSubWindow 样式: import sys from PyQt5. ...
- 基于WPF系统框架设计(5)-Ribbon整合Avalondock 2.0实现多文档界面设计(二)
AvalonDock 是一个.NET库,用于在停靠模式布局(docking)中排列一系列WPF/WinForm控件.最新发布的版本原生支持MVVM框架.Aero Snap特效并具有更好的性能. Ava ...
- 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...
- 在Winform框架的多文档界面中实现双击子窗口单独弹出或拖出及拽回的处理
在基于DevExpress的多文档窗口界面中,我们一般使用XtraTabbedMdiManager来管理多文档窗口的一些特性,如顶部菜单,页面的关闭按钮处理,以及一些特殊的设置,本篇随笔介绍这些特点, ...
- PyQt(Python+Qt)学习随笔:QMdiArea多文档界面区域的viewMode、documentMode、tabsClosable、tabPosition等属性介绍
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 viewMode属性用于控制子窗口是使用子窗口模式(QMdiArea. ...
- 第三十章、containers容器类部件QMdiArea多文档界面部件功能介绍及开发应用
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...
随机推荐
- html 背景
用語設置背景的屬性 bgcolor設置背景顏色.可以使用名字.16進制和rgb三種形式的參數: <body bgcolor="#000000"> <body bg ...
- 51nod蜥蜴与地下室(1498)(暴力搜索)
题意:一个数组s,再给你a,b值,除了s1和sn外,你可以攻击其他元素,你对这个元素的伤害为a,那么他两边的元素会受到b的牵连伤害,si-a,si-1-b,si+1-b: 求最小的次数,使得这个数组的 ...
- Sql 标识列 增长1000
Sql 标识列 增长1000 的解决办法: 1. Open "SQL Server Configuration Manager" 2. Click "SQL Server ...
- 关于min_25筛的一些理解
关于min_25筛的一些理解 如果想看如何筛个普通积性函数啥的,就别往下看了,下面没有的(QwQ). 下文中,所有的\(p\)都代表质数,\(P\)代表质数集合. 注意下文中定义的最小/最大质因子都是 ...
- Asp.net与office web apps的整合
其实网上有关office web app的整合已经有相关的文章了,典型的是如何整合Office Web Apps至自己开发的系统(一) 和如何整合Office Web Apps至自己开发的系统(二), ...
- luogu1970 花匠(dp)
设f1[i]表示以1..i中某个合法序列的长度,而且最后一位是较大的 f2[i]表示以1..i中某个合法序列的长度,而且最后一位是较小的 那么就有$f1[i]=max\{f2[j]+1\},(j< ...
- 省选前的CF题
RT,即将退役的人懒得一篇篇写题解,于是有了这个东西 CF1004E 树上选一条不超过k个点的链,最小化其余点到链上点的最大距离 这个思路很有意思,不像平时一般的树上问题,是从叶子开始一点点贪心合并直 ...
- HASH 字符串哈希 映射转化
哈希HASH的本质思想类似于映射.离散化. 哈希,通过给不同字符赋不同的值.并且钦定一个进制K和模数,从而实现一个字符串到一个模意义下的K进制数上. 它的主要目的是判重,用于$DFS$.$BFS$判重 ...
- MQTT——取消订阅报文和断开连接报文
笔者已经把连接报文,订阅报文,发布报文都讲解了完了.而接下来就是取消订阅报文和断开连接报文.和其他的报文比较的话,他们显示非常简单.甚至笔者觉得可以不必要拿出来讲.只要看一下MQTT文档就没有什么不清 ...
- A1055. The World's Richest
Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...