Devexpress xtraTabControl1实现多标签页选项卡,关闭选项卡,刷新重新加载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | //选项卡 Dictionary< string , XtraTabPage> dictXtraTabPage = new Dictionary< string , XtraTabPage>(); Dictionary< string , Form> dictXtraForm = new Dictionary< string , Form>(); public void ShowMDIForm( string cText, Form frm) { //判断是否已创建过 if (dictXtraTabPage.ContainsKey(cText)) { xtraTabControl1.SelectedTabPage = dictXtraTabPage[cText]; return ; } /*使用以下这段注释,需要把上面的if语句注释掉。 //判断是否已创建过,排除已创建的选项卡,重新加载窗体和传参。 if (dictXtraTabPage.ContainsKey(cText)&& frm.Text != "选项卡名称") { xtraTabControl1.SelectedTabPage = dictXtraTabPage[cText]; return; } //已经创建过选项卡,先移除它,重新加载,达到刷新窗体数据的目的) if (dictXtraTabPage.ContainsKey(cText) && frm.Text=="选项卡名称") { xtraTabControl1.TabPages.Remove(dictXtraTabPage["选项卡名称"]); dictXtraTabPage.Remove(cText); dictXtraForm.Remove(cText); } */ frm.Visible = true ; frm.Dock = DockStyle.Fill; frm.FormBorderStyle = FormBorderStyle.None; frm.WindowState = FormWindowState.Maximized; frm.TopLevel = false ; //注意这里,否则加载不出来 XtraTabPage xpage = new XtraTabPage(); xpage.Controls.Add(frm); //添加要增加的控件 xpage.Text = cText; //添加名称 xpage.ShowCloseButton = DevExpress.Utils.DefaultBoolean.True; xtraTabControl1.TabPages.Add(xpage); xtraTabControl1.SelectedTabPage = xpage; //显示该页 dictXtraTabPage.Add(cText, xpage); //加入XtraTabPage字典 dictXtraForm.Add(cText, frm); //加入XtraForm字典 } //关闭选项卡 private void xtraTabControl1_CloseButtonClick( object sender, EventArgs e) { ClosePageButtonEventArgs a = (ClosePageButtonEventArgs)e; string cText = a.Page.Text; if (dictXtraForm.ContainsKey(cText)) { Form form = dictXtraForm[cText] as Form; form.Close(); form.Dispose(); dictXtraForm.Remove(cText); xtraTabControl1.SelectedTabPageIndex = xtraTabControl1.SelectedTabPageIndex >= 1 ? xtraTabControl1.SelectedTabPageIndex - 1 : 0; } if (dictXtraTabPage.ContainsKey(cText)) { xtraTabControl1.TabPages.Remove((XtraTabPage)a.Page); dictXtraTabPage.Remove(cText); } } //菜单栏点击窗体 private void ToolStripMenuItem1_Click( object sender, EventArgs e) { Form form = new Form(); ShowMDIForm( "选项卡名称" , from ); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)