2012-12-28 27 views
2

我有一個基礎表格BaseForm,我用它來保存設置。這個表單沒有控件,它在設計器中作爲一個空表單被打開。但是,當我繼承此表單時,設計師拒絕在設計器中打開新創建的表單(Designer中沒有按鈕View)。可能是什麼問題?謝謝VS2012設計者從另一個表格繼承後無法打開表格

+0

它運行代碼嗎?當你在[DesignMode]中時,該代碼是否有意義(http://stackoverflow.com/questions/73515/how-to-tell-if-net-code-is-being-run-by-visual-studio-designer )? – rene

+0

儘管只有在嚴格需要時才應使用繼承,但如果基本表單沒有佈局,則可以在沒有關聯設計器的情況下創建.cs文件。 –

回答

3

問題出在.csproj文件。

每個表單都有這樣

<Compile Include="Opers\MyForm.cs"> 
    <SubType>Form</SubType> 
</Compile> 

文件中籤名的SubType元說,這實際上是一種形式,在我的檔案這是因爲某些原因被刪除。

1

我強烈建議儘可能避免繼承窗體。爲了保存設置,這肯定是可以避免的:使自己成爲FormSettingsSaver類或類似的東西,並在加載/關閉時將它作爲參數傳遞給它,等等。 繼承形式可能會讓很多頭痛,MS並沒有真的把任何工作在WindowsForms和/或設計器中。

編輯:如果你想堅持繼承形式,請檢查評論中的rene鏈接。檢查DesignMode可以避免大多數設計師問題。你也可以嘗試發表評論,直到找到罪魁禍首。構造函數中的所有代碼以及(我認爲)OnLoad在設計器中顯示錶單時執行,因此將會有一個很好的起點。

+0

我確認構造函數和OnLoad被調用;注意屬性IsDesignMode並不總是在構造函數中產生正確的值。有一些職位可選擇支票 –