[英]Drag and drop the user control won't work in .net windows project
我創建了一個用戶控件,它在工具箱中顯示為表單組件。 然后當我嘗試將用戶控件拖放到表單上時,我得到了這個visual studio錯誤。
“在配置中找不到指定的命名連接,不打算與實體客戶端提供程序一起使用或無效。”
為什么我收到此錯誤?
但是我可以拖放一些其他用戶控件在同一個項目下。 我不知道在創建這個用戶控件時我錯過了什么。
請注意UserControl類中的代碼在設計時運行。 構造函數,OnLoad方法和Load事件。 但也有像OnPaint()這樣的方法。 如果此代碼執行任何取決於正確設置的環境的代碼,則該代碼可能會拋出異常並導致設計者改變其關於將控件添加到表單的想法。 當你在“配置中找不到”錯誤時,似乎就是這種情況,但還沒有配置文件。
正確使用DesignMode可以跳過此類代碼。 像這樣:
protected override void OnLoad(EventArgs e) {
if (!this.DesignMode) {
// Do stuff...
}
base.OnLoad(e);
}
如果您將數據庫中的數據加載到userControl的構造函數中,則會顯示此錯誤。
“加載數據或初始化實體框架”
所以解決方案是將加載數據的代碼從構造函數移動到方法。 你可以稱之為“loadData”。
並在父窗體的構造函數中調用此方法“loadData”
正如Hans所說,您可能需要在Constructor或OnLoad中使用DesignMode屬性。 此外,請確保使用該連接的任何公共屬性都具有此屬性:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Foo
{
get;
set;
}
這樣,當您將控件添加到表單時,設計器不會嘗試設置它們。 對於您在設計時不會設置的屬性,這始終是一個好習慣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.