【问题标题】:Remove a TabPage删除标签页
【发布时间】:2010-11-12 14:29:52
【问题描述】:

我正在使用 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(带有特定的选项卡文本)???

谢谢。

拉利特·库马尔·巴里克

【问题讨论】:

  • 您确定要 Show() 而不是 ShowDialog()?

标签: c# tabcontrol parent-child tabpage mdichild


【解决方案1】:

之前/之后

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); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2015-04-25
    • 2014-09-19
    • 2011-04-21
    • 1970-01-01
    • 2020-07-23
    相关资源
    最近更新 更多