我正在嘗試將我的應用程序與其他幾個應用程序集成。 在一種情況下,我收到以下異常:有沒有辦法知道是否已經創建了IWin32Window?
System.InvalidOperationException was unhandled by user code
Message=SetCompatibleTextRenderingDefault must be called before the first IWin32Window object is created in the application.
這個異常是因爲我試圖做:
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
和應用程序,我試圖整合與已經創建了一些IWin32Window。
我已經搜遍了,我得到的是,如果已經有一個IWin32Window,我基本上不應該嘗試SetCompatibleTextRenderingDefault(false)
。但是由於我的應用程序將被整合到其他各種應用程序中,因此每種情況下的條件都會發生變化。
現在我打算改變我的應用程序接收參數,所以根據上下文我可以運行SetCompatibleTextRenderingDefault(false)
或不。
但是我想知道是否有方法可以驗證在做SetCompatibleTextRenderingDefault(false)
之前是否已經創建了IWin32Window。
如果這是一個愚蠢的問題,我很抱歉,但我以前沒有真正用Winforms做過很多工作。
我希望你能給我提供任何幫助。
更新
閱讀的第一答案和一些評論後,我想提一提,在那裏我有這個問題的背景是相當複雜,我無法在這裏完全解釋。我很欣賞這些反饋,並且我明白你在說什麼。
我認爲我的問題的精神被我添加的上下文誤解了,我知道錯誤發生的原因,我知道解決方法並解決問題的方法。
我只想知道是否有辦法知道是否已經創建了IWin32Window?
畢竟,由於IWin32Window已經創建,所以發生異常,所以我想知道你怎麼能知道這一點。再次
感謝。
您可以將該調用放在try/catch中,因爲您不太瞭解代碼將用於的上下文。 – Andy 2013-05-10 14:42:53
您很清楚爲什麼您對此有麻煩。它應該立即在Main()方法中調用。沒有合理的情況,在此之前可以創建窗口。如果它是「集成的」,那麼它不應該調用方法,因爲你不再控制過程配置。 – 2013-05-10 14:47:10
@我在考慮這個問題,是不是會造成任何問題? – Dzyann 2013-05-10 14:58:46