我有一个在设计器中导致异常的函数。如果设计者加载它,我可以避免调用该函数。是否存在比try catch更好的属性或东西?
更多细节: 我的意思是视觉工作室设计师的胜利形式。我的表单使用的是一个在初始化时调用LoadProject()的符号。现在我想避免设计者调用LoadProject()函数。
答案 0 :(得分:2)
假设这是WinForms - 您可以检查您当前是否在DesignMode中,并且只是让您的函数立即返回。
有一些复杂性已得到充分解释in this article,包括解决方案。
答案 1 :(得分:1)
您可以尝试使用 this article on the MSDN 查看有关使用 DesignMode 属性的信息。这可能会帮助你。您可以在一个条件中包装抛出异常的代码,以避免在设计时使用代码。
请注意,在构造函数中不起作用,因为设计者必须实例化对象,然后设置属性。
答案 2 :(得分:1)
有几种方法可以检测您是否处于设计模式:
devenv.exe
检查当前应用程序的路径是否包含Application.ExecutablePath.ToLower().IndexOf("devenv.exe")
。如果是,则由Visual Studio实例化控件。有点可怕,但它确实有效。LicenseManager.UsageMode
的值LicenseUsageMode.Designtime
(有关详细信息,请查看my answer至Detecting design mode from a Control’s constructor。请注意,这适用于构造函数。在任何这些检查中包含对您的功能的调用都可以解决您的问题。