您可以在使用 Application.Run 方法建立的 .NET Framework 訊息循環中顯示 Windows 表單,以解決元件物件模型 (COM) 互通性問題。
為了讓表單能夠在 COM 用戶端應用程式中正確運作,您必須在 Windows Forms 訊息迴圈上執行它。 若要執行此工作,請使用下列的其中一個方法:
使用 Form.ShowDialog 方法,以顯示 Windows Forms。
在個別執行緒上顯示每個 Windows Form。 如需詳細資訊,請參閱 How to: Support COM Interop by Displaying Each Windows Form on Its Own Thread。
程序
在 .NET Framework 訊息循環上顯示表單的所有方式中,使用 Form.ShowDialog 方法可能是最簡單的,因為只需要最少的程式碼就能實作。
Form.ShowDialog 方法會暫止 Unmanaged 應用程式的訊息迴圈,並將表單顯示成對話方塊。 由於主應用程式的訊息迴圈已暫停, Form.ShowDialog 方法會建立新的 .NET Framework 訊息循環來處理表單的訊息。
使用 Form.ShowDialog 方法的缺點是表單會被開啟為強制回應對話方塊。 當 Windows Forms 開啟時,這個行為會封鎖呼叫應用程式中的任何使用者介面 (UI)。 當使用者結束表單時,.NET Framework 訊息迴圈會關閉,而先前應用程式的訊息迴圈會再次開始執行。
您可以在 Windows Forms 中建立類別庫,此類別庫具有顯示表單的方法,然後再建置用於 COM Interop 的類別庫。 您可以在 Visual Basic 6.0 或 Microsoft Foundation Class (MFC) 中使用這個 DLL 檔,並在這些環境中呼叫 Form.ShowDialog 方法以顯示表單。
若要使用 ShowDialog 方法來顯示 Windows 表單以支援 COM Interop
- 將所有對 Form.Show 方法的所有呼叫取代為對 .NET Framework 元件中 Form.ShowDialog 方法的呼叫。