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

在winforms应用程序的设计器中打开的窗体的运行上下文是什么,winforms,app-config,designer,Winforms,App Config,Designer,我有一个表单无法在设计器中打开。我使用了我在回答这个问题时提到的技巧 …以确定窗体无法在设计器中打开的原因 底线是表单的load事件尝试加载一些从数据库获取数据的自定义业务对象。失败的路线是 Dim connStr As String=ConfigurationManager.ConnectionString(connectionStringName).ConnectionString …这将返回空引用异常。它在设计器中打开表单的调用上下文中找不到我的命名连接字符串,而不是在设计模式下 为什么

我有一个表单无法在设计器中打开。我使用了我在回答这个问题时提到的技巧

…以确定窗体无法在设计器中打开的原因

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

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

…这将返回空引用异常。它在设计器中打开表单的调用上下文中找不到我的命名连接字符串,而不是在设计模式下

为什么会这样?connectionstring位于表单所在项目的app.config中。我所能想到的是,设计器是在自己的上下文中打开的,不使用winforms项目的app.config。事实上,在中断上下文中…配置管理器持有两个ConnectionString…这两个都不在我的projects app.config中。它们如下

?配置管理器.连接字符串(0).连接字符串 “数据源=。\SQLEXPRESS;集成安全性=SSPI;AttachDBFilename=| DataDirectory | aspnetdb.mdf;用户实例=true”

?配置管理器.连接字符串(1).连接字符串 “数据源=“|数据目录|\aspnetdb.vdb3”

…我提到这些可能的线索。这两条绳子都不是我的。但它们都引用了我希望在我的项目中支持的两个db提供程序…sql和vistadb

所有这些都意味着……有没有一种方法可以确定设计器正在使用的运行上下文,这样我就可以将数据添加到app.config,这样它就不会在出现此错误时中断。或者(更好)有没有办法强迫设计师使用我的自定义app.config。设计器正在使用的app.config位于何处

提前谢谢你的帮助


Seth

将加载事件中破坏设计器的代码包装为以下内容:

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

谢谢…我做到了…除了我用VB做的。赛斯