zoukankan      html  css  js  c++  java
  • DevExpress中使用DocumentManager,并确保不重复

    https://www.devexpress.com/Support/Center/Question/Details/Q411356

     void ActivatForm(Type someType)
            {
                foreach (var item in tabbedView1.Documents)
                {
                    if (item.Control.GetType() == someType)
                    {
                        tabbedView1.Controller.Activate(item);
                        return;
                    }
                }
                var instance = Activator.CreateInstance(someType);
                tabbedView1.AddDocument(instance as Control);
            }
    
            private void navBarItem1_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
            {
                ActivatForm(typeof(XtraForm1));
            }
    
            private void navBarItem2_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
            {
                ActivatForm(typeof(XtraForm2));
            }
    
            private void navBarItem3_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
            {
                ActivatForm(typeof(XtraForm3));
            }

    在主窗体Load的时候,获取所有继承自XtraForm的类型

     private Dictionary<string, Type> GetAllXtraForm()
            {
                Assembly assembly = Assembly.GetExecutingAssembly();
                var list = assembly.GetTypes().Where(typeof(XtraForm).IsAssignableFrom).ToList();
                var dic = new Dictionary<string, Type>();
                foreach (var item in list)
                {
                    dic.Add(item.ToString(), item);
                }
                return dic;
            }

    通说navBarControl上的单击事件,打开窗体

     private void ActivatForm(string name)
            {
                var className = name.Replace("navBarItem",string.Empty);
                Type someType = xtraForms.FirstOrDefault(x => x.Key.Contains(className)).Value;
                if (someType == null)
                {
                    throw new Exception($@"无法识别的类型{className}");
                }
                var baseDocument = tabbedView1.Documents.FirstOrDefault(x => x.Control.GetType() == someType);
                if (baseDocument == null)
                {
                    var instance = Activator.CreateInstance(someType);
                    var control = instance as Control;
                    if (control == null)
                    {
                        throw new Exception($@"无法将{instance.GetType()}转换为{typeof(Control)}");
                    }
                    tabbedView1.AddDocument(control);
                    tabbedView1.ActivateDocument(control);
                }
                else
                {
                    tabbedView1.Controller.Activate(baseDocument);
                }
            }
  • 相关阅读:
    BZOJ 1049: [HAOI2006]数字序列
    BZOJ 1048: [HAOI2007]分割矩阵
    BZOJ 1047: [HAOI2007]理想的正方形
    BZOJ 1046: [HAOI2007]上升序列
    BZOJ 1045: [HAOI2008] 糖果传递
    Flink学习(十三) Flink 常见核心概念分析
    Flink学习(十二) Sink到JDBC(可扩展到任何关系型数据库)
    Flink学习(十一) Sink到Elasticsearch
    Flink学习(十) Sink到Redis
    Flink学习(九) Sink到Kafka
  • 原文地址:https://www.cnblogs.com/chucklu/p/6030742.html
Copyright © 2011-2022 走看看