2008-09-09 8 views
6

私は、リフレクションによってデスクトップアプリケーションを別のアプリケーション内のコントロールとしてロードしたいと考えています。.Netフォームをコントロールとして読み込むことはできますか?

私が反映しているアプリケーションは従来のものです。変更することはできません。

私は動的にフォームにアクセスできますが、コントロールとしてロードすることはできません。

.Netフォームでコントロールが展開され、反映されたフォームをコントロールとして割り当てることはできますが、実行時例外がスローされます。

フォームをコントロールとして読み込むことはできません。

フォームをコントロールに変換する方法はありますか?

答えて

10

はい、うまくいきます。私は今、.NETアプリケーションを開発しています。これは、フォームをホストフォーム上のパネルに読み込みます。

関連するスニペット:

// setup the new form 
form.TopLevel = false; 
form.FormBorderStyle = FormBorderStyle.None; 
form.Dock = DockStyle.Fill; 
form.Show (); 

// add to the panel's list of child controls 
panelFormHost.Controls.Add (form); 
+0

テスト済みです。 ありがとう:-) – Keith

1

あなたの親フォームのコントロールコレクションにフォームを追加することができるはず...

はここを参照してください:それが失敗した場合 http://vbcity.com/forums/topic.asp?tid=30539

は、コンテナを作成するために、Adapterパターンを使用してみてくださいそれの中にあなたのレガシーフォームで、MDIでおそらくそれをロード?

1

あなたが得る例外とは何ですか?コントロール自体が例外(フレームワーク対して)を与えている可能性はありますか?おそらく何かが元のアプリケーションで呼び出されていない主な機能と呼ばれていますか?

+0

TopLevelプロパティに関連するエラーが発生しました。コントロールで設定できなかったものの、フォーム上にある可能性があります。 – Keith

関連する問題