private void AddDocument(Funcation CurrentModel)
{
if (!string.IsNullOrWhiteSpace(CurrentModel.FunctionKey))
{
//如果旧版本名称与新版本不一样,用‘,’分开
var typeFullNames = CurrentModel.FunctionKey.Split(',');
foreach (var typeFullName in typeFullNames)
{
var type = Reflector.Reflect(typeFullName);//反射窗体类型
if (type != null)
{
foreach (BaseDocument fdocument in tabbedView1.Documents)
{
if (fdocument.Tag == type)
{
tabbedView1.Controller.Activate(fdocument);//是否已经打开窗体
return;
}
}
var obj = Activator.CreateInstance((Type)type);
Form form = (Form)obj;
form.Text = CurrentModel.FunctionName;//窗体
tabbedView1.BeginUpdate();//开始加载窗体
tabbedView1.Manager.MdiParent = this;
BaseDocument document = tabbedView1.AddDocument(form);
document.Footer = Directory.GetCurrentDirectory();
document.Tag = type;
tabbedView1.Controller.Activate(document);
tabbedView1.EndUpdate();
break;
}
}
}

效果如下

private void AddDocument(Funcation CurrentModel)
        {
            if (!string.IsNullOrWhiteSpace(CurrentModel.FunctionKey))
            {
                //如果旧版本名称与新版本不一样,用‘,’分开
                var typeFullNames = CurrentModel.FunctionKey.Split(',');
                foreach (var typeFullName in typeFullNames)
                {
                    var type = Reflector.Reflect(typeFullName);//反射窗体类型
                    if (type != null)
                    {
                        foreach (BaseDocument fdocument in tabbedView1.Documents)
                        {
                            if (fdocument.Tag == type)
                            {
                                tabbedView1.Controller.Activate(fdocument);//是否已经打开窗体
                                return;
                            }
                        }
                        var obj = Activator.CreateInstance((Type)type);
                        Form form = (Form)obj;
                        form.Text = CurrentModel.FunctionName;//窗体
                        tabbedView1.BeginUpdate();//开始加载窗体
                        tabbedView1.Manager.MdiParent = this;
                        BaseDocument document = tabbedView1.AddDocument(form);
                        document.Footer = Directory.GetCurrentDirectory();
                        document.Tag = type;
                        tabbedView1.Controller.Activate(document);
                        tabbedView1.EndUpdate();
                        break;
                    }
                }
            }

dev的documentManager,多个tab窗体的更多相关文章

  1. Dev的DocumentManager添加窗体

    1.DocumentManager要设置自己的MdiParent属性 2.主窗体设置IsMidContainer为True 3.要生成的窗体设置MdiParent为主窗体 4.正常创建窗体,然后就可以 ...

  2. Dev的DocumentManager 相关问题

    1.改变DocumentManager包含的窗体的排列方式 if (this.documentManager1.View.Type != ViewType.NativeMdi) { this.docu ...

  3. WPF 窗体在Alt+Tab中隐藏

    问题: 近段时间由于项目上的需求,需要在WPF中使用COM组件,并且由于软件界面设计等等原因,需要将部分控件显示在COM组件之上,由于WindowsFormsHost的一些原因,导致继承在WPF中的W ...

  4. 网络采集软件核心技术剖析系列(7)---如何使用C#语言搭建程序框架(经典Winform界面,顶部菜单栏,工具栏,左边树形列表,右边多Tab界面)

    一 本系列随笔概览及产生的背景 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱.同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的. 该软件 ...

  5. 使用Minicom基于串口调试HiKey

    虽然通过adb shell调试方便,但是有些时候不得不借助于串口进行调试,比如测试suspend to ram之类的功能时,adb服务被关闭. 同时在minicom中也可以进入shell,进行操作. ...

  6. TabActivity 切换Activity界面

    TAB切换先上图,tab标题没有添加样式,因为setIndicator可以直接接收View,所以可以自己编辑样式: 也可以实现OnTabChangeListener监听tab的点击,改变tab点击后的 ...

  7. 将u盘的文件复制到虚拟机上的linux系统上面—》文件挂载(文字+图解)

    虚拟机中操作系统.CentOs(无图形界面) 没有图形界面的linux,我也没有配置网络,现在需要把文件复制到linux系统上面,我这里就使用了u盘挂载的方式,获得了U盘中的文件. 1.VMware中 ...

  8. 生产环境下案例 No space left on device (inode使用满的情况)

    第一种情况: 问题: 如果想磁盘写入数据提示如下错误: No space left on device. 通过df -h查看磁盘空间,发现没满,请问可能原因是什么? 解答: 可能是inode数量被消耗 ...

  9. ubuntu10.04+win7双系统,重装win7后,恢复grub引导菜单以及命令行引导linux

    我在我的小Y上安装了ubuntu10.04和win7旗舰版的双系统,采用的是grub引导.今天win7不知道哪儿出了问题,windows update更新一直报错,(当然360也是打不上滴)网上查了很 ...

随机推荐

  1. Linux 基础——权限管理命令chmod

    一.Linux中的文件权限与目录权限 Linux中定义了3种访问权限,分别是r.w.x.其中r表示对象是可读的,w表示对象是可写的,x表示对象是可执行的,这3种权限组成一组rwx分别对应对象的3个安全 ...

  2. 执行了‘“npm install mysql"

    http是核心模块,封装到安装包里面了,如果在你项目的当前目录下<code>npm install mysql<code>的话就会在你当前目录下的node_modules文件夹 ...

  3. Data Visualization Books

    Data Visualization: Principles and Practice

  4. 《深入分析JavaWeb技术内幕》学习笔记

    第一章 深入Web请求过程 1.1 B/S网站架构概述 HTTP协议采用无状态的短连接的通信方式.通常一次请求就完成一次数据交互,通常也对应一个业务逻辑. 当在浏览器里输入一个URL,首先会请求DNS ...

  5. CentOS 7 之安装 Oracle 11gR2

    一.准备工作 1.下载Oracle安装包:linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip ,可以下载到本地, ...

  6. 007 jquery过滤选择器-----------(屬性过滤选择器)

    1.介紹 2.程序 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  7. C向C++改造

    步骤: 1. 把c文件后缀名换成cpp2. Android.mk文件中的hello.c也要换成hello.cpp3. c++的使用的环境变量结构体中,访问了c使用的结构体的函数指针,函数名全部都是一样 ...

  8. Android SDK platforms build-tools等镜像下载

    Android SDK platforms build-tools等镜像下载     下载地址:http://mirrors.neusoft.edu.cn/android/repository/  这 ...

  9. 5,EasyNetQ-Send Receive

    而发布/订阅和请求/响应模式是位置透明的,因为您不需要指定消息的消费者所在的位置,发送/接收模式专门用于通过命名队列进行通信. 它也不会对可以通过队列发送的消息的类型做任何假设. 这意味着您可以通过同 ...

  10. 【BZOJ 1563】 (四边形优化、决策单调性)

    1563: [NOI2009]诗人小G Time Limit: 100 Sec  Memory Limit: 64 MBSubmit: 2611  Solved: 840 Description In ...