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);

}

最新文章

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

热门文章

  1. js數組
  2. ZooKeeper客户端 zkCli.sh 节点的增删改查
  3. mybatis model属性注入多个对象 与model属性注入单个对象
  4. MySQL中char、varchar和nvarchar的区别
  5. BZOJ2157旅游——树链剖分+线段树
  6. IDEA 快捷键修改(长期更新)
  7. 【bzoj2007】 Noi2010—海拔
  8. Elasticsearch GC 时间过长的解决方法
  9. eclipse --- 新建JSP页面默认模版设置
  10. 动态分配内存 new