Application.Run メソッドを使用して作成された .NET Framework メッセージ ループに Windows フォームを表示することで、コンポーネント オブジェクト モデル (COM) の相互運用性の問題を解決できます。
COM クライアント アプリケーションからフォームを正しく動作させるには、Windows フォーム メッセージ ループでフォームを実行する必要があります。 これを行うには、次のいずれかの方法を使用します。
Form.ShowDialogメソッドを使用して、Windows フォームを表示します。
各 Windows フォームを個別のスレッドに表示します。 詳細については、「 方法: 独自のスレッドで各 Windows フォームを表示して COM 相互運用をサポートする」を参照してください。
プロシージャ
Form.ShowDialog メソッドを使用すると、.NET Framework メッセージ ループにフォームを表示する最も簡単な方法になります。これは、すべての方法で実装するコードが最小限である必要があるためです。
Form.ShowDialog メソッドは、アンマネージド アプリケーションのメッセージ ループを中断し、フォームをダイアログ ボックスとして表示します。 ホスト アプリケーションのメッセージ ループが中断されているため、 Form.ShowDialog メソッドは、フォームのメッセージを処理する新しい .NET Framework メッセージ ループを作成します。
Form.ShowDialogメソッドを使用する欠点は、フォームがモーダル ダイアログ ボックスとして開かれる点です。 この動作により、Windows フォームが開いている間に呼び出し元アプリケーションのユーザー インターフェイス (UI) がブロックされます。 ユーザーがフォームを終了すると、.NET Framework メッセージ ループが閉じられ、以前のアプリケーションのメッセージ ループの実行が再開されます。
フォームを表示するメソッドを持つクラス ライブラリを Windows フォームで作成し、COM 相互運用用のクラス ライブラリをビルドできます。 この DLL ファイルは Visual Basic 6.0 または Microsoft Foundation Classes (MFC) から使用できます。これらの環境から、 Form.ShowDialog メソッドを呼び出してフォームを表示できます。
ShowDialog メソッドを使用してウィンドウ フォームを表示して COM 相互運用をサポートするには
- Form.Show メソッドのすべての呼び出しを、.NET Framework コンポーネント内のForm.ShowDialog メソッドの呼び出しに置き換えます。
こちらも参照ください
.NET Desktop feedback