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); } }
作者:Chuck Lu GitHub |
分类:
DevExpress
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2015-11-04 error: dst ref refs/heads/zhCN_v0.13.1 receives from more than one src.