0

C# 2005 を使用して Windows アプリケーションを作成しています。Menustrip を含む 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 から公開されていません。

ChildForm から特定の TabPage (特定の Tab Text を含む) を削除して破棄するにはどうすればよいですか?

ありがとうございました。

ラリット・クマール・バリク

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 に答える