2011-01-20 56 views
1

我是C#WinForms的新手。我做了一個繼承Form類的類(EnhancedForm)。在EnhanceForm中,我已經將一些常用函數(如驗證,常用對象,如DataTable和字符串變量等,以便我可能不必一次又一次地在表單中編碼)在所有表單中使用,表單繼承了這個(EnhancedForm)。C#WinForms,這個奇怪的錯誤是什麼?

在DAL(一個單獨的類庫)中,我有一個CommonDB類,它具有DB相關的常用功能。對於數據庫通信,我以各種形式製作了CommonDB的對象。我想把CommonDB放在EnhancedForm中,這樣我就不必在所有類中創建它的對象。

以下是我無法理解的事情。應用程序正常運行但是,如果我嘗試在設計視圖中打開表單,則會出現錯誤。 「對象引用未設置爲對象的實例」我無法在設計模式下查看錶單。如果我從EnhancedForm中刪除CommonDb對象並將它放在單獨的表單中,它可以正常工作,並允許查看錶單。

如果我編譯並運行這個錯誤不會出現。請在這方面指導和幫助我。

謝謝

回答

4

您在EnhancedForm中的代碼假定了一個CommonDb對象。在運行時你創建它(可能在Form_Loaded中),但是它沒有設計時。

Preferrably,所有的代碼訪問CommonDb應該檢查空,和/或this.DesignMode

+0

我不知道VS/.NET的最新版本(我們仍然在2005年工作),但DesignMode屬性過去,根本不工作。希望他們已經修好了。 – 2011-01-20 08:52:47

1

看來,如果你正在開始你的基本形式的構造函數中的CommonDB類。 Visual Studio使用Reflection來在設計視圖中顯示錶單,這會導致窗體的構造函數被調用。你可以嘗試重建項目,看看你是否可以在設計視圖中看到這些表單,但我認爲它不會起作用。