2008-09-20 19 views
0

我已經子類Form包括一些額外的功能,這可以歸結爲一個List<Image>其顯示在一組的形式預定義的斑點。我有以下幾點:子類的形式不是設計視圖正常行爲(VS 2008)

public class ButtonForm : Form 
{ 
    public class TitleButton 
    { 
     public TitleButton() { /* does stuff here */ } 
     // there's other stuff too, just thought I should point out there's 
     // a default constructor. 
    } 

    private List<TitleButton> _buttons = new List<TitleButton>(); 
    public List<TitleButton> TitleButtons 
    { 
     get { return _buttons; } 
     set { _buttons = value; } 
    } 
    // Other stuff here 
} 

然後,我想用我的實際形式的ButtonForm而不是Form一個子類。這一切都很好,設計師甚至拿起新的財產,並將其顯示在財產清單上。我認爲這會很棒!它顯示的收藏,我可以添加按鈕到那裏,我走了。於是我打開了收藏編輯器,加入了所有的物品,然後看着坐在設計師那裏的圖片完美地呈現了我想要的東西。

這是它開始變得醜陋的地方。由於某種原因,Designer拒絕實際生成代碼來創建對象並將它們附加到集合中,所以雖然在設計模式下它看起來很棒,但只要我編譯並運行它,它就會再次消失,我回來了到一個方。我完全喪失了爲什麼會發生這種情況;如果設計器可以生成足夠好的圖片以獲得具有額外行爲的圖片的完美視圖,爲什麼不能/不會將代碼生成到實際代碼文件中?

回答

3

首先,您需要從Component繼承TitleButton類,以便設計人員知道它是可以通過設計器生成的代碼創建的組件。然後,您需要指示設計器代碼生成器處理集合的內容,而不是集合實例本身。所以嘗試以下...

public class TitleButton : Component 
{ 
    // ... 
} 

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
public List<TitleButton> TitleButtons 
{ 
    // ... 
} 
+0

那麼,這是非常簡單... Thankyou muchly。你最近似乎是我個人的救星:D – 2008-09-20 14:38:10

相關問題