我有以下代码行作为测试用户控件。构建项目后,我将此用户控件拖到窗体上,我收到一个错误对话框,大意是 EF 找不到上下文的连接字符串。然而,当我在表单中使用相同的变量时,一切都很好。用户控件似乎使用与通常的 app.config 不同的上下文来查找连接字符串。
Public Class InvoiceWorkOrderSearch
Private _dataHelper As WorkOrderData = New WorkOrderData()
End Class
我有以下代码行作为测试用户控件。构建项目后,我将此用户控件拖到窗体上,我收到一个错误对话框,大意是 EF 找不到上下文的连接字符串。然而,当我在表单中使用相同的变量时,一切都很好。用户控件似乎使用与通常的 app.config 不同的上下文来查找连接字符串。
Public Class InvoiceWorkOrderSearch
Private _dataHelper As WorkOrderData = New WorkOrderData()
End Class
在设计期间?
如果控件处于运行时模式,您可以避免仅实例化对象。
用于检查设计时间 ( ) 的内置属性Me.DesignMode
很差,因为它只告诉您当前是否正在设计控件本身。如果您将用户控件放在表单上,它会返回 false。
您可以使用此代码检查设计时间:http: //dotnet-snippets.de/dns/designmode-workaround-windows-forms-SID299.aspx
Public Class InvoiceWorkOrderSearch
Private _dataHelper As WorkOrderData
Public Sub New()
If IsDesignMode(me) = False Then
_dataHelper = New WorkOrderData()
End If
End Sub()
End Class