none
在tabpage里嵌入winform,怎麽释放 RRS feed

  • 问题

  • 在一个tabpage里面嵌入一个窗体
       TabPage tap = new TabPage();
                tap.Name = "开户发行";
                tap.Text = "开户发行";
                TabTest tabTest = new TabTest();
                tabTest.TopLevel = false;
                tabTest.Parent = tap;
                tabTest.Dock = DockStyle.Fill;
                tabControler1.TabPages.Add(tap);
                tabTest.Show();
                tabControler1.Refresh();
                tabControler1.SelectedTab = tap;
                tabControler1.TabPages.Remove(tabControler1.SelectedTab);
    怎麽在去除tabpage的时候也把窗体释放?

    本来打算使用tabTest.owner=tap;

    可惜不行,TabTest是winform窗体

    2011年8月29日 4:07

答案

  • 您好,参试遍历tabPage的controls,当为Form时就close()
    2011年8月31日 14:10
    版主
  • 重写TabPage,重写OnParentChanged方法,在这里判断Parent==null的时候,便利自身Controls属性,检查到如果是Form,则执行Close。

    不过貌似多此一举了。你可以在你窗体的Closed事件中提示一下,应该这种方式,直接移除TabPage,在TabPage执行Dispose时候会关闭窗体的。


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年9月2日 3:38
    版主

全部回复

  • 2011年8月29日 6:31
    版主
  • 我知道用tabTest.close(),但是如果我有30个tabpage,每一个tabpage对应一个窗体,就有30个窗体

        int tempIndex = tabControl1.SelectedIndex - 1;
        tabControl1.TabPages.Remove(tabControl1.SelectedTab);
         tabControl1.SelectTab(tempIndex);

     

    这个是我从网上参考的代码tabpage增加关闭按钮代码,现在实现的功能是只能去除tabpage,不能释放掉窗体

    2011年8月29日 10:57
  • 您好,参试遍历tabPage的controls,当为Form时就close()
    2011年8月31日 14:10
    版主
  • 重写TabPage,重写OnParentChanged方法,在这里判断Parent==null的时候,便利自身Controls属性,检查到如果是Form,则执行Close。

    不过貌似多此一举了。你可以在你窗体的Closed事件中提示一下,应该这种方式,直接移除TabPage,在TabPage执行Dispose时候会关闭窗体的。


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年9月2日 3:38
    版主