方法 : ShowDialog メソッドで Windows フォームを表示して COM 相互運用機能をサポートする

更新 : 2007 年 11 月

コンポーネント オブジェクト モデル (COM) 相互運用機能に関する問題は、Windows フォームを .NET Framework メッセージ ループに表示することで解決できます。このメッセージ ループは、Application.Run メソッドを使って作成します。

COM クライアント アプリケーションからフォームを正しく動作させるには、フォームを Windows フォーム メッセージ ループで実行する必要があります。この場合、次のいずれかの方法を使用します。

手順

.NET Framework メッセージ ループにフォームを表示するには、Form.ShowDialog メソッドを使用するのが最も簡単な方法です。この方法では、実装するコードが最も少なくて済みます。

Form.ShowDialog メソッドは、アンマネージ アプリケーションのメッセージ ループを中断し、フォームをダイアログ ボックスとして表示します。ホスト アプリケーションのメッセージ ループが中断されるため、Form.ShowDialog メソッドは、新しい .NET Framework メッセージ ループを作成して、フォームのメッセージを処理します。

ただし、Form.ShowDialog メソッドを使用した場合は、フォームがモーダル ダイアログ ボックスとして開かれるという欠点があります。この動作により、Windows フォームが開いている間は、呼び出し元のアプリケーションのユーザー インターフェイス (UI) がすべてブロックされます。ユーザーがフォームを終了すると、.NET Framework メッセージ ループが閉じ、アプリケーションの以前のメッセージ ループが再び実行を開始します。

Windows フォームでは、フォームを表示するメソッドを含むクラス ライブラリを作成し、そのクラス ライブラリを COM 相互運用機能用として構築できます。この DLL ファイルは、Visual Basic 6.0 または MFC (Microsoft Foundation Class) から使用でき、これらの環境のどちらからでも Form.ShowDialog メソッドを呼び出してフォームを表示できます。

ShowDialog メソッドで Windows フォームを表示して COM 相互運用機能をサポートするには

  • Form.Show メソッドへのすべての呼び出しを、.NET Framework コンポーネントに含まれる Form.ShowDialog メソッドへの呼び出しに置き換えます。

参照

処理手順

方法 : 独自のスレッドで各 Windows フォームを表示して COM 相互運用機能をサポートする

方法 : 共有スレッド上に Windows フォームを表示することで COM 相互運用をサポートする

概念

COM への .NET Framework コンポーネントの公開

その他の技術情報

Windows フォームとアンマネージ アプリケーション