C#、VS2010、WinForm应用:
有时我确实遇到问题,在打开某些控件/表单时收到错误消息。所有代码均已编译并且应用程序正常运行。在设计器中打开控件给我:
设计器加载器没有提供根组件,但没有说明原因。
根据我的经验,我可以看出,这通常是我的代码中的某些内容未正确初始化,例如未设置属性,该属性在运行时以某种方式可用,但在使用设计器打开时不可用。唯一的问题是,根本原因很难找到。
问:当设计者在 Visual Studio 2010 中打开我的组件时,是否有机会以某种方式使用调试器?这会有很大帮助,而且解决问题很可能只需几分钟。
备注:为了澄清这一点,我知道如何使用调试器;-),我只是不知道如何告诉 VS2010 的设计器在调试模式下打开我的控件。
截至 2010 年 9 月 2 日添加:
感谢您的帮助。基本上,它是描述如何执行此操作的 MSDN 库文章。
顺便说一句,使用这种方法有助于从符号加载中排除一些内容(通过模块窗口),因为这会节省很多时间。
现在,如果必须弄清楚如何解决符号问题,那么我就可以解决这个问题......
自定义控件的绝大多数设计时问题是由在设计时和运行时运行的控件中的事件处理程序或方法重写中的代码引起的。 这通常是可取的,例如,当您在“属性”窗口中更改属性时,您会得到即时反馈。
但是当代码依赖于运行时可用但设计时不可用的东西时,这是不可取的。 就像数据库连接或存储在构建文件夹中的文件一样。 这可能会生成异常,并且 Visual Studio 在设计时处理异常的能力不是很强。 最坏的情况是,您可能会在没有任何诊断的情况下使 VS 崩溃到桌面。 但一切皆有可能。
检查控件中的代码,并确保应“仅”在运行时运行的代码位按如下方式包装:
if (!DesignMode) {
// etc..
}
可以使用这篇MSDN 库文章