在winforms应用程序的设计器中打开的表单的运行上下文是什么

时间:2009-06-12 19:57:54

标签: winforms app-config designer

我有一个不会在设计师中打开的表单。我在回答这个问题时使用了我提到的技术......

Visual Studio WinForms designer does not instantiate object

...确定表单无法在设计器中打开的原因。

底线是表单的load事件尝试加载一些从数据库获取数据的自定义业务对象。失败的是......

Dim connStr As String = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString

...这会返回一个空引用异常。在设计模式下打开表单的调用上下文中找不到我的命名连接字符串。

这是为什么? connectionstring位于表单所在项目的app.config中。我所能想到的是Designer在其自己的上下文中打开并且不使用winforms项目的app.config。实际上,在break上下文中...配置管理器IS持有两个连接字符串......这两个连接字符串都不在我的项目app.config中。它们如下......

?configurationmanager.ConnectionStrings(0).ConnectionString “data source =。\ SQLEXPRESS; Integrated Security = SSPI; AttachDBFilename = | DataDirectory | aspnetdb.mdf; User Instance = true”

?configurationmanager.ConnectionStrings(1).ConnectionString “data source =”| DataDirectory | \ aspnetdb.vdb3“”

......我提到这些可能的线索。这些连接线都不是我的。但他们每个都会引用我想在项目中支持的两个数据库提供程序... sql和vistadb。

所有这一切......是否有一种方法可以确定设计人员使用的运行上下文,以便我可以将数据添加到app.config,以便它不会因此错误而中断。或者(更好)是否有办法强制设计师使用我的自定义app.config。设计师使用的app.config在哪里?

提前感谢您的帮助。

赛斯

1 个答案:

答案 0 :(得分:1)

在下面的Load事件中包装破坏设计器的代码:

if ( this.Site == null || !this.Site.DesignMode )
{
... // code that breaks the designer
}