删除TabPage

时间:2009-07-21 10:31:35

标签: c# tabcontrol parent-child tabpage mdichild

我正在使用C#2005来创建Windows应用程序。我有一个包含Menustrip和

的MDIForm(frmMainMenu)

TabControl的。我的ChildForm是frmPurchaseEntry。当用户单击特定的菜单选项时,将创建一个新的TabPage并

子表单显示在TabPage中。

我在MDIForm(frmMainMenu)的MenuClick事件中使用以下代码:

frmPurchaseEntry PurchaseEntry = new frmPurchaseEntry();
PurchaseEntry.MdiParent = this;
PurchaseEntry.TabCtrl = tabControl1;
PurchaseEntry.TopLevel = false;
PurchaseEntry.Visible = true;
PurchaseEntry.FormBorderStyle = FormBorderStyle.None;
PurchaseEntry.Dock = DockStyle.Fill;

TabPage tpPurchaseEntry = new TabPage();
tpPurchaseEntry.Parent = tabControl1;
tpPurchaseEntry.Text = PurchaseEntry.Text;
tpPurchaseEntry.Controls.Add(PurchaseEntry);

tpPurchaseEntry.Show();
PurchaseEntry.Select();

tabControl1.SelectedTab = tpPurchaseEntry ;

一切都很好。但是,当ChildForm关闭时,我无法删除TabPage。仅以下命令

关闭ChildForm,但空的TabPage仍然存在。

this.Close();

我知道删除TabPage的语法是

tabControl1.TabPages.Remove(tabControl1.SelectedTab);

但我无法从ChildForm访问MDIForm的TabControl。我试图为TabControl使用Public修饰符,但是

仍然没有从ChildForm中暴露出来。

如何从ChildForm中删除AND处理特定的TabPage(带有特定的Tab文本)???

谢谢。

Lalit Kumar Barik

1 个答案:

答案 0 :(得分:2)

之前/之后
tpPurchaseEntry.Show();

添加

PurchaseEntry.Closed += (_s,_e)=>tabControl1.TabPages.Remove(tpPurchaseEntry);

如果您使用的是C#2.0,请将“(_s,_ e)=> tabControl1.TabPages.Remove(tpPurchaseEntry)”替换为

delegate( object _s, EventArgs _e) { tabControl1.TabPages.Remove(tpPurchaseEntry); }