0

我正在创建一个紧凑框架的菜单控件。该控件包含一系列项目。我可以使用Visual Studio设计器添加项目,但是,它们绝不会添加到设计器文件中,因此下次打开设计器或构建解决方案时,菜单不再有任何项目。紧凑框架自定义控件与集合不保存

下面是该项目的代码:

public class Item 
{ 
    public int ImageIndex { get; set; } 

    private string _text = ""; 
    public string Text 
    { 
     get { return _text ?? ""; } 
     set { _text = value ?? ""; } 
    } 

    public string Name { get; set; } 
} 

这里是菜单中的相关代码:

public class ItemMenu : Control 
{ 
    public ItemMenu() 
    { 
     Columns = 4; 
     RowHeight = 64; 
     ColumnWidth = 64; 
     _items.ListChanged += new ListChangedEventHandler(_items_ListChanged); 
    } 

    private BindingList<Item> _items = new BindingList<Item>(); 
    public BindingList<Item> Items 
    { 
     get { return _items; } 
    } 

    public ImageList NormalImages { get; set; } 
    public ImageList SelectedImages { get; set; } 

    public int Columns { get; set; } 
    public int RowHeight { get; set; } 
    public int ColumnWidth { get; set; } 
    public int Rows 
    { 
     get { return (int)Math.Ceiling((double)Items.Count/(double)Columns); } 
    } 

    private void _items_ListChanged(object sender, ListChangedEventArgs e) 
    { 
     Refresh(); 
    } 
} 

有谁知道我怎么能得到项目保存到集合设计师文件,当我在视觉工作室设计师编辑?

+0

我很困惑。在设计器文件中编辑时,不应输入代码。如果您输入的是代码,则不应该在“设计器生成的文件”中执行该操作。 – jp2code

回答

0

我会尝试尽我所能地回答这个问题,但我需要为您的控件指定一些设计时间属性。有一个DesignTimeAttributes文件可以添加到控件组件中。这是一个XML文件,我相信用XMTA扩展。在每个类的XML文件中,您可以指定不同的设计时间属性,并将设计时间编辑器链接到控件等。

您需要试验的属性是DesignerSerializationVisibility属性。我相信你可以将它设置为内容,以便它能正确地序列化你的收藏。

如果你需要更多的指导,当我回到我有一个例子的地方时,我可以更新我的答案。