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