我制作父子窗体,子窗体使用tabControls控件布局。子窗体以后要使用组件制作,通过菜单直接打开调用。现在得问题是在子窗体打开时增加tabPage没有问题,但是在关闭tabPage里面的窗体时:怎样捕捉事件同时减少tabPage。我是这么做的:
//打开窗体
Form2 fm = new Form2();
fm.MdiParent = this;
fm.TopLevel = false;
TabPage tb = new TabPage();
tb.Controls.Add(fm);
tb.Text = fm.Text;
tabControl1.TabPages.Add(tb);
fm.Show();//关闭窗体,我使用得tabControl1_SelectedIndexChanged事件,然后循环tabPages,查找没有控件得page然后关闭。
foreach (TabPage myTb in tabControl1.TabPages)
{
if (myTb.HasChildren==false)
{
tabControl1.TabPages.Remove(myTb);
}
}关键:此事件是在更换其他tabPage时发生的,显然不合适,我需要的是当前tabPage中得窗体关闭时激活得事件。我试了tabControl1_ControlRemoved 事件,但是不能激活,上面得过程。估计它检测得是tabControl得控件减少,所以不会发生。请大家帮忙想想怎么写能实现我得要求,一定不要通过子窗体的事件来激活page的减少,那样会比较麻烦。最好是tabControl得事件或者父窗体得事件。
//打开窗体
Form2 fm = new Form2();
fm.MdiParent = this;
fm.TopLevel = false;
TabPage tb = new TabPage();
tb.Controls.Add(fm);
tb.Text = fm.Text;
tabControl1.TabPages.Add(tb);
fm.Show();//关闭窗体,我使用得tabControl1_SelectedIndexChanged事件,然后循环tabPages,查找没有控件得page然后关闭。
foreach (TabPage myTb in tabControl1.TabPages)
{
if (myTb.HasChildren==false)
{
tabControl1.TabPages.Remove(myTb);
}
}关键:此事件是在更换其他tabPage时发生的,显然不合适,我需要的是当前tabPage中得窗体关闭时激活得事件。我试了tabControl1_ControlRemoved 事件,但是不能激活,上面得过程。估计它检测得是tabControl得控件减少,所以不会发生。请大家帮忙想想怎么写能实现我得要求,一定不要通过子窗体的事件来激活page的减少,那样会比较麻烦。最好是tabControl得事件或者父窗体得事件。
是使用Form,但是不想在FOrm上做处理,想在父窗口上做处理。