winforms - 从基本表单访问连接字符串会导致设计器错误

标签 winforms visual-studio-2010 inheritance app-config windows-forms-designer

我有一个 vb.net Windows 窗体 应用程序,在其中使用 Windows 窗体的继承。我有一个基本表单,它提供了一些将与所有继承表单一起使用的基本布局和方法。这包括在基本形式构造函数中初始化 Entity Framework 上下文。

Dim dataContext As New CCEntities()

子表单可以使用此上下文。应用程序编译并运行时没有错误,但是当我尝试在设计器中查看子表单时,会显示一条错误,指出“在配置中找不到指定的命名连接,不打算与EntitlyClient 提供程序,或无效。”如果我将该初始化行移动到子表单构造函数中,设计器将不会出现错误。

为了解决此问题,我在初始化时在基本表单构造函数中将连接字符串指定为:

Dim dataContext As New CCEntities(System.Configuration.ConfigurationManager.ConnectionStrings.Item("CCEntities").ConnectionString)

将该引用添加到连接字符串后,子窗体现在显示“未将对象引用设置到对象的实例。

但是,如果我将实体连接字符串硬编码到该初始化行中,设计器就可以正常工作。

基本表单似乎无法访问 app.config 文件。如何获得基本表单以正确访问 app.config 文件并使设计器正常工作?

最佳答案

您需要做的是防止代码在“设计时”运行。

if(System.ComponentModel.LicenseManager.UsageMode != System.ComponentModel.LicenseUsageMode.Designtime)
{
     //do connection stuff here
}

关于winforms - 从基本表单访问连接字符串会导致设计器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12602326/

相关文章:

c# - 从两个独立的项目开始创建一个 "dll"(相同的解决方案)

Haskell:类型类:多重继承示例

c# - 如果我在 C# 代码中使用继承,数据库中是否需要有 "Type"列?

c# - WPF 模态窗口作为 WinForms 中的工具窗口消失

c# - 网络浏览器是否需要在客户端机器上安装 IE

c# - 如何在 Winforms 文本框上允许 CTRL-V(粘贴)?

c# - 帮助抽象类/类/接口(interface)单元的结构

c++ - Visual C++ 2010 代码完成

winforms - Windows 窗体应用程序转换为 .Net Framework 4.0 到 2.0

c++ - STL 列表 - 作为指针对象的数据类型