zoukankan      html  css  js  c++  java
  • dev的documentManager,多个tab窗体

    控件vs的menuStrip+dev的documentManager

    private void CreateData(List<Funcation> modules)
            {
                modules.Add(new Funcation() { ID = 1, PID = -1, FunctionName = "统计数据", FunctionKey = "" });
                modules.Add(new Funcation() { ID = 2, PID = 1, FunctionName = "未打单统计数据", FunctionKey = "ClientGoodInfo.PlaySingleInfo.frmPlaySingleInfo" });
                modules.Add(new Funcation() { ID = 3, PID = 1, FunctionName = "Rides未打单统计", FunctionKey = "ClientGoodInfo.RedisData.frmPlaySingleInfo" });
            }
    
            private void LoadItemModules()
            {
                List<Funcation> modules = new List<Funcation>();
                CreateData(modules);
                LoadItemModules(modules, -1, menuItem.Items);
            }
    
            public void LoadItemModules(List<Funcation> modules, int parentModuleNO, ToolStripItemCollection items)
            {
                foreach (var module in modules)
                {
                    if (module.PID != parentModuleNO) continue;
                    var item = new ToolStripMenuItem();
                    object runner = null;
                    if (!string.IsNullOrWhiteSpace(module.FunctionKey))
                    {
                        var typeFullNames = module.FunctionKey.Split(',');
                        foreach (var typeFullName in typeFullNames)
                        {
                            runner = ReflectFormType.Reflect(typeFullName);
                            if (runner != null) break;
                        }
                    }
                    if (runner == null && !modules.Any(m => m.PID == module.ID)) continue;
                    item.Text = module.FunctionName;
                    item.Tag = module;
                    items.Add(item);
                    item.Click += item_Click;
                    LoadItemModules(modules, module.ID, item.DropDownItems);
                }
            }
    
            private void item_Click(object sender, EventArgs e)
            {
                var type = ((ToolStripMenuItem)sender).Tag as Funcation;
                if (type != null)
                    AddDocument(type);
            }
    
            private void AddDocument(Funcation CurrentModel)
            {
                if (!string.IsNullOrWhiteSpace(CurrentModel.FunctionKey))
                {
                    var typeFullNames = CurrentModel.FunctionKey.Split(',');
                    foreach (var typeFullName in typeFullNames)
                    {
                        var type = ReflectFormType.GetFrom(typeFullName);//反射窗体类型
                        if (type != null)
                        {
                            foreach (BaseDocument fdocument in tabbedView1.Documents)
                            {
                                if (fdocument.Tag == type)
                                {
                                    tabbedView1.Controller.Activate(fdocument);//是否已经打开窗体
                                    return;
                                }
                            }
                            tabbedView1.BeginUpdate();//开始加载窗体
                            tabbedView1.Manager.MdiParent = this;
                            BaseDocument document = tabbedView1.AddDocument(type);
                            document.Footer = Directory.GetCurrentDirectory();
                            document.Tag = type;
                            tabbedView1.Controller.Activate(document);
                            tabbedView1.EndUpdate();
                            break;
                        }
                    }
                }
            }
  • 相关阅读:
    .net core 2.x默认不支持gb2312
    获取枚举描述
    C#中DateTime.Ticks
    验证组件FluentValidation的使用示例
    python计算出现错误
    EF的导航属性
    webpack不打包指定的js文件
    递归树处理,配合vue的vueTreeselect组件使用
    elementUI 日期时间选择器el-date-picker开始时间与结束时间约束
    Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
  • 原文地址:https://www.cnblogs.com/shuaimeng/p/9716997.html
Copyright © 2011-2022 走看看