我正在尝试将我的应用程序与其他几个应用程序集成。 在一种情况下,我收到以下异常:有没有办法知道是否已经创建了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