0

我正在使用 C# 2005 创建一个 Windows 应用程序。我有一个 MDIForm (frmMainMenu),其中包含一个 Menustrip 和一个

选项卡控件。我的 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 中删除并处理特定的 TabPage(带有特定的选项卡文本)???

谢谢你。

拉利特·库马尔·巴里克

4

1 回答 1

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); }
于 2009-07-21T11:39:18.467 回答