紧凑的框架自定义控件,集合不保存

本文关键字:集合 保存 自定义控件 框架 | 更新日期: 2023-09-27 17:49:19

我正在为紧凑框架创建一个菜单控件。该控件有一组项。我可以使用visual studio设计器添加项,但是,它们永远不会添加到设计器文件中,因此下次打开设计器或构建解决方案时,菜单不再有任何项。

下面是Item的代码:

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();
    }
}

有没有人知道我如何获得项目的集合保存到设计器文件,当我在visual studio设计器中编辑它?

紧凑的框架自定义控件,集合不保存

我将在休假期间尽我所能回答这个问题,但是您需要指定一些设计时间属性来控制。有一个DesignTimeAttributes文件,您可以将其添加到控件程序集中。它是一个XML文件,我相信具有XMTA扩展。在每个类的XML文件中,您可以指定不同的设计时属性,以及将设计时编辑器链接到控件等。

您需要试验的属性是DesignerSerializationVisibility属性。我相信你可以把它设置为Content,这样它就会正确地序列化你的集合。

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