0

私はC#2005を使用してWindowsアプリケーションを開発しています。タブコンテナを使用して子フォームを表示することを計画しています。メニューストリップを使用してメニューを表示し、MainMenuフォームのIsMDIContainer=trueプロパティを設定しました。MainMenuフォームにはタブコントロールも含まれており、すべての子フォームをタブコントロールのタップページとして表示する予定です。

これまで、ユーザーがメニューオプションを選択したときにタブページを追加することができました。しかし、タブページ内に子フォーム自体を表示する方法がわかりません。

メニュークリックイベントで次のコードを使用しました。

frmPurchaseEntry PurchaseEntry = new frmPurchaseEntry;
PurchaseEntry.MdiParent = this;
PurchaseEntry.TabCtrl = tabControl1;

TabPage tpPurchaseEntry = new TabPage();
tpPurchaseEntry.Parent = tabControl1;

tpPurchaseEntry.Text = "Purchase Entry";
tpPurchaseEntry.Show();

PurchaseEntry.TabPag = tpPurchaseEntry;
PurchaseEntry.Show();
tabControl1.SelectedTab = tpPurchaseEntry;

タブページに子フォームを正しく表示するにはどうすればよいですか?[ファイル]->[新しいタイプのアプリケーション]が必要ありません。メニュークリックイベントで同じ(空白の)フォームが表示されます。私のメニューオプションは、それぞれ固有の/異なるフォームを表示する必要があります。

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

ラリットクマールバリク

4

1 に答える 1

0

子フォームの Parent プロパティが役立ちます。それを tabpage オブジェクトに設定して、何が起こるか見てみましょう。

編集: どうやら、これは ArgumentException を発生させます。「トップレベル コントロールをコントロールに追加することはできません。」代わりに、フォームのコンテンツを Panel などに配置してから、その Panel の Parent プロパティを設定できます。

私自身が使用するもう 1 つのオプションは、関連するフォームで Activate() メソッドを呼び出す偽のTabStrip を使用することです。親の MdiChildren リストを列挙してタブを描画し、それぞれのヒットレクトを記憶します。

于 2009-07-16T17:49:59.877 に答える