2009-07-21 5 views
0

저는 C# 2005를 사용하여 Windows 응용 프로그램을 만듭니다. Menustrip 및TabPage 제거

TabControl 들어있는 MDIForm (frmMainMenu) 있습니다. 내 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 ; 

모든이 개까지 OK입니다. 그러나 ChildForm 닫을 때 TabPage 제거 할 수 없습니다. 다음 명령 만

은 ChildForm을 닫지 만 빈 TabPage는 여전히 남아 있습니다.

this.Close(); 

은 내가 TabPage가

tabControl1.TabPages.Remove(tabControl1.SelectedTab); 

입니다 제거하는 구문을 알고하지만 ChildForm에서 MDIForm의 TabControl에 액세스 할 수 없습니다 임. TabControl에 Public 수정자를 사용하려고 시도했지만

여전히 ChildForm에서 노출되지 않습니다.

특정 TabPage를 제거하고 ChildForm에서 특정 탭 텍스트로 처리하는 방법 ???

감사합니다. 당신은 C# 2.0을 사용하는 경우

더 그랜드 쿠마 Barik

+0

확실 하시겠습니까? ShowDialog()가 아닌 Show()를 원하십니까? –

답변

2

전 /를

tpPurchaseEntry.Show(); 

후 (_s, _E) => tabControl1.TabPages.Remove "대체

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

를 추가 (tpPurchaseEntry) "with

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