Удалить вкладку - PullRequest
       7

Удалить вкладку

0 голосов
/ 21 июля 2009

Я использую C # 2005 для создания приложения Windows. У меня есть MDIForm (frmMainMenu), который содержит Menustrip и

TabControl. Мой ChildForm - это frmPurchaseEntry. Когда пользователь нажимает на конкретную опцию меню, создается новая вкладка и

дочерняя форма отображается на вкладке.

Я использую следующий код в событии MenuClick 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 ;

Все в порядке до этого. Но я не могу удалить TabPage, когда ChildForm закрыт. Только следующая команда

закрывает ChildForm, но пустая TabPage по-прежнему остается.

this.Close();

Я знаю, что синтаксис для удаления TabPage -

tabControl1.TabPages.Remove(tabControl1.SelectedTab);

Но я не могу получить доступ к TabControl MDIForm из ChildForm. Я пытался использовать Public модификатор для TabControl, но

все же он не выставляется с помощью ChildForm.

Как я могу удалить и удалить определенную вкладку (с определенным текстом вкладки) из ChildForm ???

Спасибо.

Лалит Кумар Барик

1 Ответ

2 голосов
/ 21 июля 2009

До / после

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