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);
}
最新文章
- 【C#进阶系列】18 特性Attribute
- javaEE基础
- mysql前缀索引(字符串截取部分作为索引), 以及索引选择指引
- VC6.0 error LNK2001: unresolved external symbol _main(转)
- MVC api json 格式
- Android 热修复Nuwa的原理及Gradle插件源码解析
- 解决Download interrupted: Connection to https://dl-ssl.google.com refused的问题
- MFC动态创建按钮,并在按钮上实现位图的切换显示
- StackOverFlow的2016统计
- C#-面向对象的多态思想 ---ShinePans
- Java之多线程
- CI框架剖析一
- Xamarin.Forms(二) 返回页面的数据刷新
- 201521123013 《Java程序设计》第10周学习总结
- MySQL连接数实时查看
- Springboot 部署到linux(二)
- Centos + docker,Ubuntu + docker介绍安装及详细使用
- springboot学习(一):创建项目
- Spring 添加属性集中常见方法
- CentOS6.3 安装配置 ant