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;
                        }
                    }
                }
            }
  • 相关阅读:
    Python | PyQt5编写计时器与倒计时应用程序
    AI文件与PS文件相互导入,并分层可编辑
    maple解方程组
    有限元数值分析
    常用Latex编辑数学公式
    notion
    总结一下ANSYS中不同单元之间选择与连接问题
    参考文献的引用方法
    Abaqus CAE笔记本
    几种大文件传输的平台
  • 原文地址:https://www.cnblogs.com/shuaimeng/p/9716997.html
Copyright © 2011-2022 走看看