我正在使用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
答案 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); }