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);
    }

  

posted @   小湖123  阅读(521)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示