2012-09-26 52 views
0

我有以下幾行代碼作爲測試用戶控件。在構建項目時,我將此用戶控件拖放到窗體上,出現錯誤對話,表明EF無法找到上下文的連接字符串。然而,當我在表單中使用相同的變量時,一切都很好。看起來,用戶控件使用不同的上下文來查找連接字符串,而不是通常的app.config。爲什麼我的VB.NET用戶控件不能實例化ObjectContext?

Public Class InvoiceWorkOrderSearch 
    Private _dataHelper As WorkOrderData = New WorkOrderData() 
End Class 
+0

是在從中你將它添加到一個單獨的項目的用戶控件? –

+0

@TimBJames不,同一個項目。 – ProfK

+0

單獨的用戶界面和數據層。用戶控件中的上下文很糟糕。 –

回答

1

在設計時間?

如果控件處於運行時模式,則可以避免這種情況僅爲實例化對象。

建立財產來檢查設計時間(Me.DesignMode)是窮人,因爲它只告訴你,如果你目前正在設計控制本身。如果將usercontrol放在表單上,​​它將會返回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 
+0

我使用了類似於這個答案的東西,但是我也使用了#如果調試#else #EndIf用於其他場景... IsDesignMode非常適合拖放控件。 –

+0

你不能使用#Debug僞指令,因爲如果你部署了一個調試版本,它將評估爲true。 –

+0

這解決了本來會有無數其他相關問題。謝謝。 – ProfK

相關問題