2009-07-21 10 views
0

Ich verwende C# 2005, um eine Windows-Anwendung zu erstellen. Ich habe eine MDIForm (frmMainMenu), die eine Menustrip und eineEntfernen Sie eine TabPage

TabControl enthält. Meine ChildForm ist frmPurchaseEntry. Wenn der Benutzer auf eine bestimmte Menüoption klickt, wird eine neue TabPage erstellt und

das untergeordnete Formular wird in der TabPage angezeigt.

Ich verwende den folgenden Code in das MenuClick Ereignis des MDIForm (frmMainMenu):

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 ; 

Alles bis das ist OK. Aber ich kann das TabPage nicht entfernen, wenn das ChildForm geschlossen wird. Der folgende Befehl nur

schließt die ChildForm, aber die leere TabPage bleibt noch.

this.Close(); 

weiß, dass ich die Syntax ein TabPage

ist
tabControl1.TabPages.Remove(tabControl1.SelectedTab); 

Aber Im nicht in der Lage zu entfernen, die TabControl von MDIForm vom Child zuzugreifen. Ich habe versucht, Public-Modifikator für die TabControl zu verwenden, aber

noch ist es nicht von der ChildForm ausgesetzt.

Wie kann ich entfernen und eine bestimmte TabPage (mit einem bestimmten Tab Text) aus dem ChildForm ???

Vielen Dank.

Lalit Kumar Barik

+0

sind Sie sicher yo Du willst Show() und nicht ShowDialog()? –

Antwort

2

vor/nach der

tpPurchaseEntry.Show(); 

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

hinzufügen Wenn Sie C# 2.0 ersetzen „verwenden (_s, _e) => tabControl1.TabPages.Remove (tpPurchaseEntry) "mit

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