0

问题如下:

在我的用户控件中,我有标签列表(List),它通过“智能标签”(使用 DesignerActionMethodItem)填充添加 UC 的标签。

问题是当我们在设计时它可以正常工作,例如,我在设计时添加了 3 个项目,但是当我测试应用程序时,这些项目消失了,就好像它们从未添加过一样。

PS:

我有:

MyControl 类,

[Designer(typeof(MenuItemPanelDesigner ))]
public partial class MenuItemPanel : UserControl
{

    private List<Label> _listaItems;


    public MenuItemPanel()
    {
        InitializeComponent();
    }


    public List<Label> ListaItems
    {
        get
        {
            if (this._listaItems == null)
            {
                this._listaItems = new List<Label>();
            }
            return this._listaItems;
        }
    }


    public void AgregarItem()
    {
        Label nuevoItem = new Label();
        nuevoItem.Text = "Item " + this._listaItems.Count;
        nuevoItem.AutoSize = false;
        nuevoItem.TextAlign = ContentAlignment.MiddleCenter;
        nuevoItem.Cursor = Cursors.Hand;
        this.ListaItems.Add(nuevoItem);
        this.Controls.Add(nuevoItem);
        nuevoItem.Dock = DockStyle.Top;
        nuevoItem.Height = 50;
    }


}

MyControlDesigner 类

class MenuItemPanelDesigner : System.Windows.Forms.Design.ControlDesigner
{

    private DesignerActionListCollection actionLists;

    public override DesignerActionListCollection ActionLists
    {
        get
        {
            if (null == actionLists)
            {
                actionLists = new DesignerActionListCollection();
                actionLists.Add(new MenuItemPanelDesignerActionList(this.Component));
            }
            return actionLists;
        }
    }

}

和 MyControlDesignerActionList

class MenuItemPanelDesignerActionList : DesignerActionList
{

    private MenuItemPanel colUserControl;
    private DesignerActionUIService designerActionUISvc = null;

    //The constructor associates the control with the smart tag list.
    public MenuItemPanelDesignerActionList(IComponent component) : base(component)
    {
        this.colUserControl = (MenuItemPanel)component;
        this.designerActionUISvc = (DesignerActionUIService)GetService(typeof(DesignerActionUIService));
    }

    // Implementation of this abstract method creates smart tag  items, 
    // associates their targets, and collects into list.
    public override DesignerActionItemCollection GetSortedActionItems()
    {
        DesignerActionItemCollection items = new DesignerActionItemCollection();

        //Define static section header entries.
        items.Add(new DesignerActionHeaderItem("Items"));
        items.Add(new DesignerActionMethodItem(this,"AgregarItem","Agregar Item"));


        return items;
    }

    // Metodos 
    public void AgregarItem()
    {
        this.colUserControl.AgregarItem();
    }

}
4

0 回答 0